Fastest hash for non-cryptographic uses?(非加密用途的最快哈希?)
问题描述
我基本上是在准备要放入数据库的短语,它们可能格式不正确,所以我想存储它们的短散列(我将简单地比较它们是否存在,因此散列是理想的).
I'm essentially preparing phrases to be put into the database, they may be malformed so I want to store a short hash of them instead (I will be simply comparing if they exist or not, so hash is ideal).
我认为 MD5 在 100,000 多个请求上相当慢,所以我想知道散列短语的最佳方法是什么,也许推出我自己的散列函数或使用 hash('md4', '...' 最终会更快吗?
I assume MD5 is fairly slow on 100,000+ requests so I wanted to know what would be the best method to hash the phrases, maybe rolling out my own hash function or using hash('md4', '...' would be faster in the end?
我知道 MySQL 有 MD5(),所以这会在查询端增加一点速度,但也许 MySQL 中还有一个更快的散列函数,我不知道它是否适用于 PHP..
I know MySQL has MD5(), so that would complement a bit of speed on the query end, but maybe there's further a faster hashing function in MySQL I don't know about that would work with PHP..
推荐答案
CRC32 非常快,并且有一个函数:http://www.php.net/manual/en/function.crc32.php
CRC32 is pretty fast and there's a function for it: http://www.php.net/manual/en/function.crc32.php
但是您应该知道 CRC32 比 MD5 甚至 SHA-1 哈希具有更多的冲突,这仅仅是因为长度减少了(32 位与 128 位和 160 位相比).但是,如果您只想检查存储的字符串是否已损坏,那么使用 CRC32 就可以了.
But you should be aware that CRC32 will have more collisions than MD5 or even SHA-1 hashes, simply because of the reduced length (32 bits compared to 128 bits respectively 160 bits). But if you just want to check whether a stored string is corrupted, you'll be fine with CRC32.
这篇关于非加密用途的最快哈希?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:非加密用途的最快哈希?
基础教程推荐
- 如何在 Laravel 中使用 React Router? 2022-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 如何替换eregi() 2022-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
