【发布时间】:2011-08-14 21:50:55
【问题描述】:
我需要一个可以用少于 26 个字符表示的哈希 md5产生32个字符长的字符串,如果转换成base 36会有多好,
我需要哈希不是为了加密,而是为了唯一性,基本上根据输入和输入数据的时间来识别每个输入。目前我可以认为这是
$hash=md5( str_ireplace(".","",microtime()).md5($input_data) ) ;
$unique_id= base_convert($hash,16,36) ;
应该这样还是使用 crc32,它会提供更小的哈希大小,但我担心它不会那么独特?
【问题讨论】:
-
出于好奇:为什么您的唯一 ID 限制为 26 个字符?
-
您可能会在 md5 碰撞之前遇到 crc323 碰撞。但是,为了唯一性,我至少会使用 sha1。
-
使用 sha-1 哈希,然后截断到所需的字符数是完全可以接受的。除非您要处理数十亿个项目,否则 26 个字符应该足以避免发生冲突。
-
如果碰撞对你来说是个严重的问题,那么你可以排除 crc32。
标签: hash md5 uniqueidentifier crc32