关于哈希函数的一个小发现

最近在做关于哈希的一个应用,结果发现结果居然不均匀,还以为发现了什么世纪BUG。

 

具体现象就是,即使我怎么生成随机数,最后哈希出来的取模放到一堆桶里面之后,特定桶中的数量几乎是不变的。

 

在做了一系列的实验和卡方分析后,发现问题在于:我拿进去哈希的内容中,本来应该是长度为4字节的东西,结果由于记错了rand的生成范围,实际上只用到了前两个字节,最终令放进去哈希的内容永远只有前两个字节有内容。当我把四个字节的内容全部改成随机生成后,生成的哈希随机数发生器就均匀了。

 

但这也引出了一个问题:根据定义,理想的哈希函数对于有一比特差异的数据所生成的结果也应该是完全不可预测的。是否说明现有的哈希算法并不是真正满足理想哈希的特性?另外,假如把这个特性在实现的过程中使用,是否可以给系统开发留下后门?

posted @ 2022-02-04 22:02  lynnzixing  阅读(39)  评论(0编辑  收藏  举报