【发布时间】:2015-01-29 09:00:09
【问题描述】:
我正在尝试创建一个 C# 应用程序,该应用程序使用 bruteforce 恢复 MD5 哈希密码(仅用于测试,仅限于小写 a-z)
我遇到了循环问题。它需要在尝试 a-z 后添加一个新字符,并开始一个新的循环来尝试所有可能的组合。
下面的代码有效,但远非最佳。关于如何制作“智能”循环的任何提示?
public void CompareMD5()
{
string outputMD5 = "";
int chars = 1;
int loop = 0;
int i = 0;
int ii = 0;
while (!outputMD5.Equals(targetMD5))
{
if (chars == 1)
{
Console.WriteLine("trying " + charSet[i]);
outputMD5 = GenerateMD5(charSet[i]);
i++;
if (i >= charSet.Length)
{
Console.WriteLine("\n" + "*** ADDING CHAR ***" + "\n");
i = 0;
chars++;
}
}
if (chars == 2)
{
Console.WriteLine("trying " + charSet[i] + charSet[ii]);
outputMD5 = GenerateMD5(charSet[i] + charSet[ii]);
i++;
if (i >= charSet.Length)
{
i = 0;
ii++;
}
if (ii >= charSet.Length)
{
ii = 0;
i++;
loop++;
}
if (loop == 1)
{
Console.WriteLine("\n" + "*** ADDING CHAR ***" + "\n");
i = 0;
ii = 0;
chars++;
}
}
}
}
【问题讨论】:
-
如果你真的想暴力破解哈希密码,这是最糟糕的方法,请查看“彩虹表”:project-rainbowcrack.com/table.htm
-
我写这篇文章是为了了解 md5、散列和简单的暴力破解。但感谢您的评论。彩虹桌看起来很有趣。
标签: c# loops hash cryptography md5