PHP:可反转的唯一散列

PHP:可反转的唯一散列,php,hash,unique,urlencode,Php,Hash,Unique,Urlencode,我正在用PHP构建一个浏览器(browser-in-browser(:只是为了好玩),我遇到了一个主要问题。我需要将URL缩短为可以反转的更短(编码)的内容 例如,现在我对页面进行如下处理: site.com/stackoverflow.com/questions/9217271/php-reverse-able-unique-hash site.com/sftDblt 这太长了,我一直在寻找这样的东西: site.com/stackoverflow.com/questions/921727

我正在用PHP构建一个浏览器(browser-in-browser(:只是为了好玩),我遇到了一个主要问题。我需要将URL缩短为可以反转的更短(编码)的内容

例如,现在我对页面进行如下处理:

site.com/stackoverflow.com/questions/9217271/php-reverse-able-unique-hash
site.com/sftDblt
这太长了,我一直在寻找这样的东西:

site.com/stackoverflow.com/questions/9217271/php-reverse-able-unique-hash
site.com/sftDblt
其中“sftDblt”可以反转为“stackoverflow.com/questions/9217271/php可反转唯一散列”


您知道什么可以帮助您吗?

如果没有查找表,您所要求的(基本上)是不可能的。显然,您可以使用标准的压缩算法,但是您必须将压缩数据编码为ASCII字符串(base-64等),它可能比原始字符串大。

为什么不为该键启动一个计数器?在数据库中跟踪url和计数器。

哈希不能反转。您应该使用尝试以下操作:使用标题中每个单词的第一个字母,并将其保存在post表的一列中

使用您的示例(site.com/stackoverflow.com/questions/9217271/php可反转唯一散列),url将是“prauh”


如果该url恰好存在于数据库中,您可以添加2个随机字母数字字符,然后再次检查数据库是否存在。

查看并。

我创建了一个小类,在一些评论员的帮助下完成这类工作。

通常的方法是将散列和结果URL存储在数据库表中。然后您可以从中查找内容,只需生成唯一代码并将其作为主键存储在数据库中,作为与完整URL关联的主键。@Pekka用户每天访问500页*10k用户=每天500行。没有其他方法吗?@MorSela,让我们备份一个b它。为什么你需要在一个应用程序中存储多个用户的URL?正如其他人所说,你只能使用数据库和编码包含完整URL的行的ID来实现这一点。否则,你需要的是难以置信的压缩。同意。OP需要一个哈希表。根据定义,哈希是不可逆的。