彩虹表字符串的整数表示

时间:2018-10-13 14:09:40

标签: c++ hash cryptography rainbowtable cryptanalysis

我一直在阅读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为模的整数(字符集大小),编写了带有查找表的小程序,逐步浏览了几十个玩具彩虹表程序的代码,并研究了如何减少操作已完成,但是这些都不能解决这个特定的问题,也不能解决每个明文中的合理差异。

因此,无论是由于很少或没有研究成果而将其否决的人,您都会去。您可能只是认为我很呆板,而不是在提出问题之前并没有真正尝试做任何研究或取得进展的人。

0 个答案:

没有答案