哈希算法,字母数字输出最多20个字符

时间:2011-01-28 08:55:08

标签: hash md5 sha1

我需要一个哈希算法,输出一个长度最多为20个字符的字母数字字符串。对于"字母数字"我的意思是[a-zA-Z0-9]

输入是规范形式的UUID(例如550e8400-e29b-41d4-a716-446655440000

另一种方法是将SHA1或MD5哈希值转换为具有这些限制的字符串吗?

感谢。

修改

不需要加密安全。碰撞会使数据不准确,但如果它们偶尔发生,我就可以忍受它。

编辑2

我不知道截断MD5或SHA1会不会经常发生冲突。现在我想知道将MD5值或SHA1值截断为20个字符是否更好。

1 个答案:

答案 0 :(得分:16)

只需从GUID的哈希中剪切您不需要的字符。使用良好的散列函数,散列的任何部分的不可预测性与部件的大小成比例。如果你愿意,你可以编码它基础32而不是标准的十六进制基数16.请记住,这不会显着改善每个字符的熵(仅25%)。

对于非加密用途,是否截断MD5,SHA1或SHA2并不重要。熵都没有任何明显的缺陷。