所以我需要破解一个散列来解决一个难题,我编辑了一个Python程序,它迭代所有可能的组合,但是Python程序太慢了,因为散列每天都在变化,我知道它是一个长度为8的散列
python程序的工作方式如下:
charset = "abcdefghijklmnopqrstuvwxyz012345679"
NUMBER_OF_CHARACTERS = len(charset)
sequence = list("a a a a a a a a".split(" "))
while(True):
current = "".join(sequence)
sequence = next(sequence)
#check if hash of sequence matches target hash
函数:“next”如下所示:
if len(string) <= 0:
string.append(indexToCharacter(0))
else:
string[0] = indexToCharacter((characterToIndex(string[0]) + 1) % NUMBER_OF_CHARACTERS)
if characterToIndex(string[0]) is 0:
return list(string[0]) + next(string[1:])
return string
indexToCharacter只返回索引(index)处字符串字符集中的字符
characterToIndex返回给定字符在字符串索引中的位置
因此,characterToIndex(“a”)将返回0,而indexToCharacter(0)将返回“a”
现在我需要的是,把这个Python程序转换成C++程序,因为C++的速度更快,我有索引字符函数,特性索引函数,但是我不能让下一个函数工作。你知道吗我在C++ +/p>中得到下一个函数
string next(string sequence)
{
sequence[0] = indexToCharacter(characterToIndex(sequence[0])+1);
if (characterToIndex(sequence[0]) == 0)
{
//Something
}
}
string sequence = "aaaaaaaa";
next(sequence);
indexToCharacter和characterToIndex的代码:
int characterToIndex(char character)
{
return charset.find(character);
}
char indexToCharacter(unsigned index)
{
return charset[index];
}
在这种特殊情况下,我不会一直和std::string对象纠缠在一起。你有固定的长度,对吗?你可以这样做非常有效的(同时工作在C++和C.)。–只需根据自己的需要调整缓冲区长度和字符列表): 你知道吗
我刚打印出来的值,你可以做任何你需要做的。。。你知道吗
相关问题 更多 >
编程相关推荐