散列两个相等的字符串会给出相同的散列值
Will hashing two eual strings give same hash value
我需要将我们 MySql 数据库中的个人数据匿名化。问题是我仍然需要能够 link 匿名化后的两个人。
我认为这可以通过散列他们的社会安全号码或电子邮件地址来完成,这引出了我的问题:
当散列两个相等的字符串(s1 和 s1)时,我得到两个散列值(h1 和 h2),我有多确定:
1) 哈希值等于(h1 = h2)
2) no not equal (s3 = s1) 会产生相同的hash值
1) 相同的字符串将始终产生相同的哈希值
2)如果您选择与数据量相比较小的散列长度,理论上不同的字符串可能会产生相同的散列。但是使用默认哈希长度(32 或 40)不会导致此类问题。
1) 当使用正确的散列函数时,(h1 = h2) 对于每个定义的相等字符串(s1 和 s2)始终为真。
2) 两个不同的字符串可以有相同的哈希值。这称为 "collsison"。概率取决于使用的散列函数和生成的散列的长度。比如MD5,有找碰撞的网站和表格,挺有意思的。
我不确定你所说的 link 将人聚集在一起是什么意思,也不知道你的要求是什么,所以我无法帮助你。但是你可以 link 两个人连同他们的身份证。
我需要将我们 MySql 数据库中的个人数据匿名化。问题是我仍然需要能够 link 匿名化后的两个人。
我认为这可以通过散列他们的社会安全号码或电子邮件地址来完成,这引出了我的问题:
当散列两个相等的字符串(s1 和 s1)时,我得到两个散列值(h1 和 h2),我有多确定:
1) 哈希值等于(h1 = h2)
2) no not equal (s3 = s1) 会产生相同的hash值
1) 相同的字符串将始终产生相同的哈希值
2)如果您选择与数据量相比较小的散列长度,理论上不同的字符串可能会产生相同的散列。但是使用默认哈希长度(32 或 40)不会导致此类问题。
1) 当使用正确的散列函数时,(h1 = h2) 对于每个定义的相等字符串(s1 和 s2)始终为真。
2) 两个不同的字符串可以有相同的哈希值。这称为 "collsison"。概率取决于使用的散列函数和生成的散列的长度。比如MD5,有找碰撞的网站和表格,挺有意思的。
我不确定你所说的 link 将人聚集在一起是什么意思,也不知道你的要求是什么,所以我无法帮助你。但是你可以 link 两个人连同他们的身份证。