这纯粹是假设性的问题,但是如果您要从128位开始,然后将它们哈希2 ^ 128次,例如使用MD5算法,您最终会回到原始位吗?是否会使用所有可能的组合?如果不是,是否有某些小玩意比其他小玩意“散回自己”更快?
我认为这几乎是不可能实现的(看了我对2 ^ 128的计算器的答案之后),而且我很确定答案对于不同的算法会有所不同,但这并不能阻止一个理论化,它?
是的,就是这样,希望外面的人会对此主题有更多的了解。期待看到答案,在此先感谢!
编辑:澄清一下:在这个问题上,我最感兴趣的是它是否会经过所有可能的位组合,或者是否存在几个较小的循环,因此请您对任何其他相关且有趣的信息表示赞赏。
一个好的密码哈希应该有一些但不是太多的循环,这使得为其创建彩虹表变得更加困难。这发生在MD5中-实际上,MD5的一个问题是,对于算法的给定哈希,也很容易找到哈希冲突。这种弱点使得在将恶意数据注入经过MD5哈希处理的文件中进行验证时,在计算上是可行的。
我认为您认为MD5具有某些Fermat的小定理属性,但事实并非如此。哈希函数很可能很快就会开始走动了,应该这样做。
还有一种非常有效的内存查找MD5周期的方法。也看一下MD5CRK。
如果您确实想要一个唯一的128位ID的“散列”,则应使用普通的加密算法,例如带有特定数字和密钥的AES算法。这给您一个“随机”,唯一的数字行,形成一个递增的id,因为在给定用于加密数据的相同密钥的情况下,您始终可以以唯一的方式解密信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句