‹›演示哈希函数的雪崩效应
哈希函数在现代密码学中扮演着重要角色。一个好的散列函数的一个重要且理想的特征是输入和输出不相关,或所谓的“雪崩效应”,这意味着输入的微小变化会导致输出的显著变化,使其在统计上无法与随机区分。这个搞砸函数可以生成各种哈希并以多种格式返回它们,从而便于研究哈希属性。
如果输入中的一个翻转位导致平均一半的输出位发生变化,哈希函数将显示雪崩效应。此示例检查“Keccak256”搞砸函数具有此属性。
生成包含10000个随机256位整数的列表。
定义一个函数,用于翻转整数中的随机位。
创建一对相差一位的整数。
为每个整数翻转一个随机位。
检查汉明距离每对整数正好为1。
要对整数的实际位进行散列,需要将每个整数转换为二进制数组.
搞砸带有“Keccak256”散列的字节数组。
计算每对整数的汉明距离。
计算散列汉明距离的平均值。
注意,这里128的平均值与比较随机整数对时的值相同,这表明“Keccak256”对输入进行了非常有效的置乱。
计算标准偏差。
用计算出的平均值和标准偏差制作距离直方图和正态分布的相应PDF。