如何减少哈希值的长度?

时间:2010-11-07 05:34:49

标签: hash

我想在服务器端应用程序中从MD5或SHA1挤压或压缩结果哈希值,以便在客户端可以解压缩或解压缩它,这可能吗?它是我的应用程序的可用性问题。

2 个答案:

答案 0 :(得分:4)

不,哈希值无法压缩。通过设计,它们的位是高度随机的并且具有最大的熵,因此没有冗余来压缩。

如果您想让用户更容易阅读哈希值,您可以使用不同的技巧,例如:

  • 显示更少的数字。而不是32位只显示16位。

  • 使用不同的基础。例如,如果你使用base 62使用所有大写和小写字母以及数字0-9作为数字,那么你可以使用显示128位哈希22个字母+数字与32个十六进制数字:

      

    log 62 (2 128 )≈21.5

  • 添加空格或标点符号。您通常会看到使用短划线打印的CD键,如AX7T4-BZ41O-JK3FF-QOZ96。用户可以更容易地读取这20个数字,这些数字全部卡在一起。

答案 1 :(得分:1)

哈希值非常短;试图对这些(非常随机且高度变化的)值进行压缩是困难且低效的。如果要节省空间,截断值可能有所帮助,但请记住,如果这样做,则会增加冲突空间(并减少密钥空间)。