可能重复:
php short hash
MD5哈希很长且使用不方便。如何进一步编码md5字符串以使用字符子集生成更短的字符串,例如a-z,A-Z和0-9? jsfiddle.net在他们的网站上做了类似的事情来制作易于复制和粘贴的短链接,如下所示: http://jsfiddle.net/uY7Pk/
答案 0 :(得分:2)
当您拥有持久性数据存储区时,不需要对网址缩短程序使用散列,因为您实际上并不是编码长网址,而只是关联 a用它来表示。
答案 1 :(得分:1)
JSFiddle正在使用一种算法来缩短URL,这与MD5散列没什么关系。
由于哈希算法通常会生成一定长度的十六进制数据...
echo md5("Hello World");
-> b10a8db164e0754105b7a99be72e3fe5
...可能有算法稍微压缩这些哈希值,但它们肯定会产生二进制blob - 这不是特定的字符子集,例如az,AZ和0-9。
旁注:PHPass目前是在php中使用哈希的可靠方法。
答案 2 :(得分:0)
我认为你在加密和缩短网址之间感到困惑。
您在JSfiddle上看到的不是加密,它是引用该页面的唯一ID。他们不是单独使用数字ID,而是使用字母,它允许来自相同数量字符的更多组合。
答案 3 :(得分:-1)
使用base64_encode($ hash)。它将产生一个通常更短的编码版本。
另一种方法是计算一个32位整数的crc32
但这取决于你之后是否需要恢复你的。