【发布时间】:2026-01-10 05:00:01
【问题描述】:
我在 python 中有一个 md5 校验和;喜欢s = '14966ba801aed57c2771c7487c7b194a'。
我想要的是缩短它并使其成为“a-zA-Z0-9_.-”形式的字符串,而不会丢失我的随机 md5 校验和的熵。
输出必须是可发音的,所以我不能只做binascii.unhexlify(s)。我也不能做base64.encodestring(s) 并剪掉它,因为那样我会失去熵。
关于如何在不将十六进制对 (00->FF) 的疯狂数字 (256) 映射到不同字母的情况下解决此问题的任何想法?
我想要这个的原因是能够通过电话说出整个 md5 校验和,但使用整个字母+数字+一些特殊字符。
【问题讨论】:
-
可能是
hash(s)或hex(hash(s))? -
嗯,十六进制基本上是一种以 16 为基数的编码方式;编码为 base 65 (26+26+10+3) 应该没什么不同(除了没有内置函数可以做到这一点)。
-
什么用例要求您需要这个?
-
假设一个随机的
s,你想缩短它而不降低熵吗?我希望你意识到这是没有意义的 -
我希望 md5 校验和更短。一个人应该通过电话说出来,因此最好缩短它并使用整个字母+数字。我也可以使用大写和小写。
标签: python string random passwords md5