【发布时间】:2012-06-15 17:08:15
【问题描述】:
我已经浏览了这个页面...
http://www.php.net/manual/en/function.hash.php
MD5 为 32 个字符,而 sha1 为 40。 例如
$str = 'apple';
sha1 string d0be2dc421be4fcd0172e5afceea3970e2f3d940
md5 string 1f3870be274f6c49b3e31a0c6728957f
即使可选的 raw_output 设置为 TRUE,md5 摘要也会以长度为 16 的原始二进制格式返回。
我正在寻找一个可以创建等于或小于 8 个字符的哈希的函数。
更新: 我需要更小的字符串有 3 个原因:
1) MySQL 存档表类型似乎不允许在超过 8 个字符的列上建立索引
2) 我打算使用像 redis 这样喜欢较小键的键值实用程序
3) 安全性在这里不是问题。我正在散列“国家+电信+运营商”之类的列
【问题讨论】:
-
嗯,要么你需要很多位(用于许多信息),要么你不需要。如果是后者,那么为什么不将哈希字符串截断到所需的长度呢?只要您始终以相同的方式进行操作,结果也应该相同(对于相同的输入)。但请记住,更少的比特会导致更高的冲突概率。
-
你需要这个做什么?我几乎不假设您想要生成临时密码,但请记住,哈希仅包含 16 个不同的字符。密码少了。
-
你应该添加更多解释为什么你希望创建一个只有 8 个字符的哈希。这是非常脆弱的。我担心你可能会犯一个大错误,这会在你醒来时跟随你并从内部诅咒你的项目。
-
@shantanuo:你也看到this
标签: php