我在格式一系列代碼:我怎麼可以散列/混淆9-11個字符唯一
AA12345A1
即:[a-z]{2}[0-9]{5}[a-z][0-9]
和
AA12345A123
即:[a-z]{2}[0-9]{5}[a-z][0-9]{3}
我需要創建一個新的任何格式的「代碼」從上述任何一種格式以掩蓋以1號碼結尾的號碼和以3號碼號碼結尾的號碼之間的差異(這向用戶揭示了我需要隱藏的信息)。
爲新的代碼格式的約束條件是:
- 它們需要是人類使用(因此,使用大寫和小寫字母是一個壞主意可用性明智的,也應儘可能短)
- 他們必須是唯一的(9號或11字符的代碼應該產生相同的輸出)
- 只需要一個單向散列,我從來沒有需要獲得原代碼後面
- 原來的長度代碼(9或11個字符)一定不是顯而易見的 - 它不需要密碼對於外行來說只是不透明的。
是否有任何合適的哈希算法來做到這一點,或有沒有人有任何建議這樣做的自定義方式?
感謝
但哈希本身並不保證是唯一的。另一方面,SHA-1長於11個字符(甚至不考慮限制值),所以它可能實際上散列到所有給定輸入的唯一值。 – 2010-09-29 12:04:23
@Konrad:是的,它並不保證是唯一的。但是你可以計算這個概率,如果這個應用程序沒有問題,它可能是一個解決方案,這使得在知道另一個代碼時很難「猜測」一個代碼。 – 2010-09-29 12:09:34