蛮力我的gpg密码

Eam*_*orr 1 algorithm perl gnupg

愚蠢的是,我忘记了我的gpg密码.

我知道密码由六个字符串中的三个组成,由"_"连接.

可能性是(假设)"1","2","3","4","5"和"6".

假设密码实际上是"2_5_3".

如何循环所有组合?应该没有重复项(即"2_2_4"不是有效密码)!

我试图用Perl写这个,但不知道从哪里开始.伪代码很好.

提前谢谢了,

更新:好的,我现在就开始工作了.

不像下面的一些解决方案那么优雅......

#!/usr/bin/perl

use strict;
use warnings;

my @possibilities=("111","222","333","444","555","666","777");

my $size=scalar(@possibilities);
print $size."\n";

for(my $i=0;$i<$size;$i++){
        for(my $j=0;$j<$size;$j++){
                for(my $k=0;$k<$size;$k++){
                        if($i==$j || $j==$k || $i==$k){

                        }else{
                                print $i."_".$j."_".$k."\n";
                        }
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

Tot*_*oto 10

这是一种使用perl的方法:

my @l = glob "{1,2,3,4,5,6}_{1,2,3,4,5,6}_{1,2,3,4,5,6}";
@l = grep{!/(\d)[_\d]*\1/}@l;
Run Code Online (Sandbox Code Playgroud)