PHP / MySQL:哈希常见数据

时间:2017-06-03 12:39:03

标签: php mysql hash sha

我正在查看我当前的数据库设置,它包含大约7个不同表中的大量用户完整家庭地址,所有这些都有不同程度的不一致数据(由于人们可以用/键入他们的邮政编码的方式)例如,没有空格。

有问题的申请尚未上线 - 距离全面完工但距离尚未生效,所以现在任何变化都比6个月后更容易,因为表格中有大量数据

花几个小时重构处理用户家庭地址的代码/数据库而不是每次都使用散列算法插入完整的地址,这是值得的吗? 这将为我们提供更大的一致性,显然可以通过用户可以共享地址哈希的方式进行设置,因此我们甚至可以更轻松地按地址搜索它们。

我们目前使用此方法存储用户代理 - 将UA字符串哈希并将其存储在自己的单独表中,并将其存储在实际UA字符串的中间文本列中,然后将UA哈希存储在需要它的表中(见下文),并使用SHA1。但是,在基于非冲突的散列方面,我可以使用哪些选项,但您也可以在中小规模的生产环境中以最快的时间执行这些选项?

UA String Hash Table

这意味着两个明显的,MD5 / SHA1 100%没有发生,并且我不会真的使用比不幸更大的哈希。 为了记录,对于密码加密我使用password_hash所以不要惊慌!

显然,用户的家庭地址比用户代理字符串重要得多,这就是我问你推荐什么的原因。

由于

1 个答案:

答案 0 :(得分:0)

对于那些你想知道的人,我选择了SHA256。

我没有意识到openssl中实际上有一个基准哈希算法的功能,可以像:openssl speed alg1 alg2 alg3 etc

一样使用

查看下表中的64/256字节,虽然显然它的执行速度不如MD5 / SHA1,但我还是认为它仍然足够快,无论如何都可以用于生产。

我以为我会发布这个帖子,让任何不了解openssl speed的人都可以参加。

[root@prod-use1a ec2-user]# openssl speed md5 sha1 sha256 sha512
Doing md5 for 3s on 16 size blocks: 9785239 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 7076501 md5's in 2.99s
Doing md5 for 3s on 256 size blocks: 3832312 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 1363911 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 194888 md5's in 3.00s
Doing sha1 for 3s on 16 size blocks: 10839355 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 7479305 sha1's in 2.99s
Doing sha1 for 3s on 256 size blocks: 4024302 sha1's in 3.00s
Doing sha1 for 3s on 1024 size blocks: 1478185 sha1's in 3.00s
Doing sha1 for 3s on 8192 size blocks: 227631 sha1's in 3.00s
Doing sha256 for 3s on 16 size blocks: 7984178 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 4370920 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 1904856 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 589307 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 77639 sha256's in 2.99s
Doing sha512 for 3s on 16 size blocks: 6481869 sha512's in 3.00s
Doing sha512 for 3s on 64 size blocks: 6479426 sha512's in 3.00s
Doing sha512 for 3s on 256 size blocks: 2425680 sha512's in 3.00s
Doing sha512 for 3s on 1024 size blocks: 869702 sha512's in 3.00s
Doing sha512 for 3s on 8192 size blocks: 120660 sha512's in 3.00s


The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md5              52187.94k   151470.26k   327023.96k   465548.29k   532174.17k
sha1             57809.89k   160092.15k   343407.10k   504553.81k   621584.38k
sha256           42582.28k    93246.29k   162547.71k   201150.12k   212715.28k
sha512           34569.97k   138227.75k   206991.36k   296858.28k   329482.24k
[root@prod-use1a ec2-user]#