0

我一直在阅读 RainbowCrack 和旧源代码的文档,但我无法找到开发人员哈希减少到 64 位整数的位置,它可以保存 UINT64_MAX 纯文本。

文档:https ://project-rainbowcrack.com/file_format.htm

摘抄:

起点和终点都是小端序的 64 位无符号整数,表示明文。

在这个例子中,字符集是“abcdefghijklmnopqrstuvwxyz0123456789”,明文长度范围是1到7。所以0代表明文“a”,1代表明文“b”,35代表明文“9”,36代表明文“ aa”,80603140211 代表明文“9999999”。

某处必须描述如何生成所有可能的明文(上例中大小为 80,603,140,​​211,36 个可能的字符,长度为 1 到 7)或更可能,归约函数的子集。给定一个散列,可能是具有 160 位输出的 SHA1,它会缩减为某个整数,占用 64 位,然后在长度为 1 到 7 的字符集 [a-z0-9] 中生成明文。

我想我要问的是,鉴于该过程是确定性的,并且必须从起点产生相同的哈希减少,如何在不引入随机性的情况下从 0 到明文长度 N 的良好分布发生?尝试从减少中稍微调整数字,这样可以索引到字符集,选择字符 c(重复 N 次),明文长度为 N?

注释:我查看了以 N 为基数到 N 基数的转换,我检查了整数模 N(字符集大小),编写了带有查找表的小程序,逐步完成了数十个玩具彩虹表程序的代码,并检查了减少是如何的完成了,但这些都没有帮助解决这个特定的问题,或者下一个试图在每个明文中产生合理的差异。

因此,无论谁因为很少或没有研究努力而投票否决,你就去吧。您可能只是认为我很无聊,而不是在提出问题之前实际上并没有尝试进行任何研究或取得进展的人。

4

0 回答 0