将散列两个eual字符串给出相同的散列值

时间:2017-12-07 09:02:28

标签: mysql security hash data-security

我需要在MySql数据库中对个人数据进行匿名处理。问题是我仍然需要能够在匿名后将两个人联系在一起。

我认为这可以通过散列他们的社会安全号码或电子邮件地址来完成,这导致了我的问题:

当散列两个相等的字符串(s1和s1)时,我得到两个散列值(h1和h2),我有多确定:

1)散列值相等(h1 = h2)

2)no not equal(s3 = s1)将产生相同的哈希值

2 个答案:

答案 0 :(得分:2)

1)相同的字符串将始终产生相等的哈希值
2)如果您选择与数据量相比较小的散列长度,理论上不同的字符串可能会产生相同的散列。但是使用默认的哈希长度(32或40)不会导致这样的问题。

答案 1 :(得分:1)

1)当使用正确的散列函数时,(h1 = h2)对于每个定义的相等字符串(s1和s2)始终为真。

2)两个不同的字符串可以具有相同的哈希值。这被称为“collsison”。概率取决于使用的散列函数和结果散列的长度。例如,对于MD5,有用于查找冲突的网站和表格,这非常有趣。

我不确定将人们联系在一起或你的要求是什么意思,所以我无法帮助你。但你可以把两个人和他们的ids联系在一起。