我一直在阅读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为模的整数(字符集大小),编写了带有查找表的小程序,逐步浏览了几十个玩具彩虹表程序的代码,并研究了如何减少操作已完成,但是这些都不能解决这个特定的问题,也不能解决每个明文中的合理差异。
因此,无论是由于很少或没有研究成果而将其否决的人,您都会去。您可能只是认为我很呆板,而不是在提出问题之前并没有真正尝试做任何研究或取得进展的人。