URL的最佳可逆哈希算法是什么? (近零碰撞!)

时间:2009-09-30 22:39:14

标签: hash

假设我有一个网址。

http://google.com ...我想把它变成哈希。 S3jvZLSDK。 然后拿这个哈希并反转它!进入http://google.com

对你来说太棒了 - 对于近乎零的碰撞,最好的方法是什么?

4 个答案:

答案 0 :(得分:16)

如果你可以反转它,那么根据定义它不是哈希。这是一种编码。任何编码都将具有零冲突(否则它将无法准确地反转它)。

用于此目的的常见编码是base64

答案 1 :(得分:8)

散列的重点是它不可逆(没有蛮力,在输出匹配之前尝试所有可能的输入)。

这是否适用于URL缩短服务?通常的方法是将http://google.com存储在一个唯一键下的数据库中,当有人用该键查询时(如果你真的喜欢随机字符串,那么可能是'S3jvZLSDK',但可能很容易' 1')你再次吐出你记得的价值。

答案 2 :(得分:4)

你是想写一个像URL shortener这样的东西吗?如果是这样,只需生成一个随机字符串,然后使用大型哈希表,关系数据库(带索引)等将密钥(S3jvZLSDK)与URL(google.com)相关联,反之亦然。

这将为您提供处理冲突的简单解决方案(密钥已存在,URL已存在)和快速查找。

答案 3 :(得分:0)

无法获得接近零的冲突,但如果使用具有大输出大小的加密哈希,则可以任意进行冲突。 SHA-2系列包含一个512位密钥的版本;那应该是你。