PHP - 从长md5哈希生成短字母数字字符串的好方法是什么?
这是为了有一个很好的短URL,它指的是数据库中的md5哈希。我想转换这样的东西:
a7d2cd9e0e09bebb6a520af48205ced1
变成这样:
hW9lM5f27
这两者都包含大约相同数量的信息。该方法不必是直接和可逆的,但那会很好(更灵活)。至少我想要一个随机生成的字符串,其中十六进制哈希作为种子,这样它就可以重现。我相信有很多可能的答案,我很好奇人们会如何以优雅的方式做到这一点。
哦,这不必与原始哈希值有完美的1:1对应关系,但这将是一个奖励(我想我已经用可逆性标准暗示了这一点)。如果可能的话,我想避免碰撞。
编辑我意识到我最初的计算是完全错误的(感谢这里回答的人,但我花了一段时间才知道),你不能通过把所有的小写字母和大写字母都扔进去来真正减少字符串的长度。所以我想我会想要一些不会直接从十六进制转换为62进制的东西。