【发布时间】:2013-08-30 03:30:45
【问题描述】:
我的目标是为长度为 42 个不区分大小写的字母数字字符的字符串生成一个 6 个字符的短哈希字符串(可能包含字符 [A-Z][a-z][0-9])。唯一性是关键要求。安全性或性能并不那么重要。
是否有特定的算法可以给出这个结果,还是我应该坚持截断 MD5 哈希或 SHA-1 哈希 (Like in this question)?如果有,发生碰撞的概率是多少?
【问题讨论】:
-
我试过了,string sourceString = "SomeTestStringWhichIs42CharactersInLength!"; Console.WriteLine(sourceString.GetHashCode().ToString("X6"));它返回一个 8 字符哈希。
-
如何为 42 字符长的字符串生成唯一的 6 字符哈希?
-
根据您的限制,您可以(最多)散列 62^6 个数字而不会发生冲突。尽管在散列了一半之后,您将有 50% 的碰撞机会(充其量)。取决于要散列的数据和散列算法 - 当然。一些算法在不同的数据集下会做得更好