Hash 在不使用文件的情况下强制执行哈希值的一种方法
首先,这个问题是关于我最近写的这条线; 举例胜于解释 假设我们有这个md5哈希:Hash 在不使用文件的情况下强制执行哈希值的一种方法,hash,Hash,首先,这个问题是关于我最近写的这条线; 举例胜于解释 假设我们有这个md5哈希:15e0adc0213e01ec44acee74ed4ece5b 我只知道这个散列方法是md5,明文长度是6,字符集是[a-zA-Z]。 现在,我必须用这些信息找到清晰的文本。 我最初会做什么 我只想在linux上使用“crunch”软件,创建一个具有所有可能的文件。 然后我会编写一个脚本,计算每一行的散列并搜索整个文件,直到找到我要查找的文件。 不幸的是,由于[a-zA-Z]{6}生成了131GB的文件,因此不
15e0adc0213e01ec44acee74ed4ece5b
我只知道这个散列方法是md5,明文长度是6,字符集是[a-zA-Z]。
现在,我必须用这些信息找到清晰的文本。
我最初会做什么
我只想在linux上使用“crunch”软件,创建一个具有所有可能的文件。
然后我会编写一个脚本,计算每一行的散列并搜索整个文件,直到找到我要查找的文件。 不幸的是,由于[a-zA-Z]{6}生成了131GB的文件,因此不建议使用此方法。我需要另找一条路。
我正在考虑的另一种选择
我正在考虑并寻找一种方法来强制执行此哈希,方法与我上面描述的相同,但不使用文件。 是否有类似于此“代码”的脚本(无论何种语言)
for(int i=0; i<[a-zA-Z]{6}.size(); i++){
int result = md5_function(i)
if( result == '15e0adc0213e01ec44acee74ed4ece5b' ) {
cout << "Result : " << result << endl;
}
else {}
}
for(int i=0;iC#中的一个简单实现类似于:
IEnumerable<string> GetCombinations(char[] charset, int length)
{
if(length == 0)
{
yield return "";
yield break;
}
foreach(var s in GetCombinations(charset, length-1))
{
foreach(var c in charset)
{
yield return s + c;
}
}
}
更丑陋、更不灵活,但也更容易理解:
foreach(var c1 in charset)
{
foreach(var c2 in charset)
{
...
foreach(var c6 in charset)
{
var s = c1 + c2 + ... + c6;
if(hash(s)==targetHash)
yay(s);
}
...
}
}
我不知道其他的反对票,但我的反对票是因为你甚至懒得抄过去。
foreach(var c1 in charset)
{
foreach(var c2 in charset)
{
...
foreach(var c6 in charset)
{
var s = c1 + c2 + ... + c6;
if(hash(s)==targetHash)
yay(s);
}
...
}
}