Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 动态更改循环迭代次数_Loops_Iteration_Combinations_Brute Force - Fatal编程技术网

Loops 动态更改循环迭代次数

Loops 动态更改循环迭代次数,loops,iteration,combinations,brute-force,Loops,Iteration,Combinations,Brute Force,我试图生成组合并验证给定的哈希。我用作 for i= 'a' to 'z' { for j= 'a' to 'z' { for k= 'a' to 'z' { for l= 'a' to 'z' { hashStr = MD5(i+j+k+l); if(hashStr = targetHash) {

我试图生成组合并验证给定的哈希。我用作

for i= 'a' to 'z'
{
    for j= 'a' to 'z'
    {
        for k= 'a' to 'z'
        {
            for l= 'a' to 'z'
            {
                hashStr = MD5(i+j+k+l);
                if(hashStr = targetHash)
                {
                    print "Match Found"
                    Exit
                }

            }
        }
    }
}
使用上面的伪代码,我可以生成固定长度为4的组合,如下所示

aaaa
aaab
aaac
...
zzzz

也许有人能帮我写逻辑,这样就可以很容易地更改长度,而无需添加额外的for循环迭代。

正如@TJ所建议的,递归可能是最直接的方法

JavaScript
只要调用
loop(l)
在所有长度的字符串上循环
l
,就可以找到冲突。

谢谢,我正在学习递归。我使用javascript实现它。我还添加了javascript代码供您参考
var chars = 'abcdefghijklmnopqrstuvwxyz';

function loop(prefix, length) {
    if (length > 0) {
        for (var i = 0; i < chars.length; i++) {
            loop(prefix + chars.charAt(i), length - 1);
        }
    } else if (length == 0) {
        var hashStr = prefix;
        // ......
        // Your logic goes here         
        // ......
    } else {
        // length should always be non-negative
    }
}

function theLoop(length) {
    loop('', length);
}
void loop(int length) {
    loop("", length);
}

void loop(String prefix, int length) {
    if (length > 0) {
        for (char i = 'a'; i <= 'z'; i++) {
            loop(prefix + i, length - 1);     // concatenate prefix with char (i)
        }
    } else if (length == 0) {
        String hashStr = prefix;
        // ......
        // Your logic goes here         
        // ......
    } else {
        // length should always be non-negative
    }
}