我正在尝试解决一个难题,就是对代码进行反向工程,得到一个可能的密码列表,从中应该有一个“突出”并且应该有效的密码
function checkPass(password) {
var total = 0;
var charlist = "abcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < password.length; i++) {
var countone = password.charAt(i);
var counttwo = (charlist.indexOf(countone));
counttwo++;
total *= 17;
total += counttwo;
}
if (total == 248410397744610) {
//success//
} else {...
我用python写了一些我认为应该行得通的东西,我逆向工程了它的加法和乘法的顺序,让它尝试每个字符,看看它是否正确地被分成一个偶数。在
^{pr2}$但当我试着运行它时
deisx
Process finished with exit code 0
我想知道为什么我的函数不能正确地递归,因为从我看来它应该递归。试着自己运行,看看会发生什么。在
这个谜题应该有多种解决方案(我想?),我计划让它能够重复,直到它得到所有的解,但我有点迷茫,为什么它只在每个字母中运行一次,然后就死了。在
编辑: 修改了代码以实际递归,但现在没有输出,仍然以退出代码0结束。
编辑2: 再次修改
代码既不重复也不递归,因为:
runlist
函数只调用一次runlist
函数不适合递归模式,即:恐怕我对python不太了解,但我可能可以帮助您掌握算法。在
编码过程重复以下操作:
所以在任何时候,总数是17的倍数加上最后一个字母的值。所以递归求解器中的每一步都必须去掉最后一个字母,然后将结果除以17。在
但是,由于乘法器是17,字母表中有26个字符,一些剩余值可能由多个字母产生——这是许多密码可能产生相同解决方案的地方。在
例如:
因此,如果当前余数是1,那么编码的字母可能是“a”或“r”。我认为在你的解决方案中,你只寻找第一种情况,而忽略了第二种情况。在
在伪代码中,我用来解决这个问题的函数如下所示:
如果有帮助的话,你要找的答案是12个字符长,可能无法在这个论坛上打印!在
高温
相关问题 更多 >
编程相关推荐