我需要一個可以在不到26個字符 的Md5產生32個字符長的字符串表示的哈希值,如果將其轉換爲base 36有多好會是哪一個使用,MD5散列或CRC32在這種情況下
我需要散列不是用於密碼學,而是用於唯一性,基本上根據輸入和輸入數據的時間來識別每個輸入。目前我可以認爲這是
$hash=md5(str_ireplace(".","",microtime()).md5($input_data)) ;
$unique_id= base_convert($hash,16,36) ;
應該這樣或使用crc32這將給較小的散列大小,但我害怕它不會是獨特的?
出於好奇:爲什麼您的唯一ID限制爲26個字符? –
在md5碰撞之前,您可能會遇到crc323碰撞。但是,我會至少使用sha1來獲得唯一性。 – mbx
使用sha-1散列是完全可以接受的,然後截斷所需數量的字符。除非你處理數十億個物品,否則26個角色應該不會造成碰撞。 –