【问题标题】:How to reduce hash value's length?如何减少哈希值的长度?
【发布时间】:2010-11-07 05:34:48
【问题描述】:

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

【问题讨论】:

  • 例如:你要发送你的一次性密码,这是一个哈希值的结果,用户很难写 32 个字节......

标签: hash


【解决方案1】:

不,哈希值不能被压缩。按照设计,它们的比特是高度随机的并且具有最大的熵,因此没有要压缩的冗余。

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

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

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

    log62 (2128) ≈ 21.5

  • 添加空格或标点符号。您通常会看到带有破折号的 CD 键,例如 AX7T4-BZ41O-JK3FF-QOZ96。对于用户来说,阅读这比 20 个数字都挤在一起更容易。

【讨论】:

    【解决方案2】:

    哈希值很短;尝试对这些(非常随机和高度变化的)值进行压缩是困难且低效的。如果您想节省空间,截断值可能会有所帮助,但请记住,这样做会增加碰撞空间(并减少键空间)。

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 2017-09-13
      • 2013-01-10
      • 2018-08-05
      • 2015-06-28
      • 2023-04-11
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多