较短的哈希字符串,不会影响安全性

时间:2011-09-20 11:16:35

标签: php encryption

  

可能重复:
  php short hash

MD5哈希很长且使用不方便。如何进一步编码md5字符串以使用字符子集生成更短的字符串,例如a-z,A-Z和0-9? jsfiddle.net在他们的网站上做了类似的事情来制作易于复制和粘贴的短链接,如下所示: http://jsfiddle.net/uY7Pk/

4 个答案:

答案 0 :(得分:2)

  1. 生成随机的N字符串。
  2. 查看是否还有其他内容已将该字符串作为数据库中的短语。
  3. 如果是,请转到1.如果否,请将该字符串存储为数据库中资源的简短。
  4. 当您拥有持久性数据存储区时,不需要对网址缩短程序使用散列,因为您实际上并不是编码长网址,而只是关联 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

但这取决于你之后是否需要恢复你的。