我設計了一個工具的用戶界面,用戶需要輸入最多300個字符的「名稱」,並且該工具生成一個文本文件(「Name」.txt),然後將其上傳到「服務器」(Mainframe和Unix)。我想將300個字符的字符串縮短爲唯一可識別的8個字符的字符串(因爲問題主要在大型機中),就像使用某種哈希算法的tinyurl。我找到了一個SHA1實現,但結果字符串長度爲40個字符。有人可以爲該算法提供VBA實現嗎?將300個字符的字符串轉換爲VBA中唯一可識別的8個字符的字符串
生成的字符串長度爲8個字符的要求是嚴格的 - 我的猜測是,它應該是可行的,因爲我們對輸入字符串的大小有限制。
雖然我對統計數學並沒有任何瞭解,但只是將前八個字符切掉會大大增加碰撞的機率。 – MvanGeest 2010-07-29 08:37:10
@MvanGeest:是的,它會的,但它可能還是夠好的。如果您需要8個字符的base64編碼散列,則您有64^8 = 2.8E14個不同的組合。如果哈希值相當隨機,在約2000萬條目中碰撞的機率達到50%,有200萬條條目的機會不到1%。 – Jens 2010-07-29 08:53:07