【发布时间】:2010-11-07 05:34:48
【问题描述】:
我想在服务器端应用程序从 MD5 或 SHA1 压缩或压缩结果哈希值,以便在客户端可以解压缩或解压缩它,这可能吗?这是我的应用程序的可用性问题。
【问题讨论】:
-
例如:你要发送你的一次性密码,这是一个哈希值的结果,用户很难写 32 个字节......
标签: hash
我想在服务器端应用程序从 MD5 或 SHA1 压缩或压缩结果哈希值,以便在客户端可以解压缩或解压缩它,这可能吗?这是我的应用程序的可用性问题。
【问题讨论】:
标签: hash
不,哈希值不能被压缩。按照设计,它们的比特是高度随机的并且具有最大的熵,因此没有要压缩的冗余。
如果您想让用户更容易阅读哈希值,您可以使用不同的技巧,例如:
显示更少的数字。而不是 32 位,只显示 16。
使用不同的基数。例如,如果您使用基数 62,使用所有大写和小写字母加上数字 0-9 作为数字,那么您可以使用 22 个字母+显示 128 位哈希数字与 32 个十六进制数字:
log62 (2128) ≈ 21.5
添加空格或标点符号。您通常会看到带有破折号的 CD 键,例如 AX7T4-BZ41O-JK3FF-QOZ96。对于用户来说,阅读这比 20 个数字都挤在一起更容易。
【讨论】:
哈希值很短;尝试对这些(非常随机和高度变化的)值进行压缩是困难且低效的。如果您想节省空间,截断值可能会有所帮助,但请记住,这样做会增加碰撞空间(并减少键空间)。
【讨论】: