有个关于哈希的问题,我一直想不明白.有很多著名软件在官网上公布他们的哈希值,
但据我所知,哈希值长度固定,就是说范围有限(虽然范围很大).那么,我就不明白了,
既然范围有限,你的软件一个哈希值,我的软件一个哈希值,这样用下去,会不会有一天
所有哈希值都用完的?
理论上会,但是这个值超过了宇宙中原子的个数。即便宇宙中每个原子可以存储一个文件,也不会重复。
但是,如你所知,hash是会重复的,虽然在自然情况下重复概率可以忽略,但是人为制造相同hash,但是数据不同是可行的,这被叫做hash的碰撞算法。
山东大学的杨小云教授,就因为破解了md5的碰撞算法,而非常有名。
一个md5 hash有32个16进制数组成,相当于16^32,也就是2^128,按照2^10=10^3估算,大约是10^38。构成地球的原子数不超过10^30。10^38相当于超过一亿个地球的原子数。
谢谢两位,领会了~~~~~~~~~~~~~~~~~~~~~~~~`
傻了,是一个人~~~~~~~~~~~~~~~~~~~~~~~~~~~