我有一些由2025位表示的信息。爲了緩存的目的,我需要創建一個唯一的文件名(當然不會太長,所以FS會處理這個),這將代表這些位。每組位應該有唯一的文件名。將2025位轉換爲最短文件名
是md5適合這個嗎?如果不是,我應該使用什麼?
我有一些由2025位表示的信息。爲了緩存的目的,我需要創建一個唯一的文件名(當然不會太長,所以FS會處理這個),這將代表這些位。每組位應該有唯一的文件名。將2025位轉換爲最短文件名
是md5適合這個嗎?如果不是,我應該使用什麼?
結帳uniqid()
。如果你是超偏執的人,把文件名的生成放在一個循環中,在那裏你檢查它是否存在。
$prefix = hash('sha256', $bits) . '-';
$filename = uniqid($prefix, true);
這將創建位爲前綴的文件的SHA-256散列,並使用uniqid
與文件是位後跟一個-
的哈希的前綴創建一個唯一的文件名。
這應該會生成一個唯一的文件名,您可以通過對比特進行散列來識別。
您可以使用位的Base64 encoding。這將保證名稱的獨特性。
base64將輸出比轉換爲字符串的位更大的文件名 – 2012-07-25 23:07:33
什麼? 7位數位串如何比1位數的Base64編碼串短? – tskuzzy 2012-07-25 23:19:28
如何從2025位創建7位數位串,即。 $位= 「111000000000000000100000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ......」 – 2012-07-25 23:45:37
爲了緩存目的,我需要從這些位具有完全獨特的相同文件名。 – 2012-07-25 23:05:04
是否可以生成兩次相同的位序列? – drew010 2012-07-25 23:05:49
比特序列可以生成兩次,每次需要創建完全相同的文件名。 – 2012-07-25 23:13:38