PHP短加密

时间:2012-02-27 13:08:58

标签: php encoding short

我正在使用此代码:

$url = "http://www.webtoolkit.info/javascript-base64.html";
print base64_encode($url);

但结果很长:“aHR0cDovL3d3dy53ZWJ0b29sa2l0LmluZm8vamF2YXNjcmlwdC1iYXNlNjQuaHRtbA ==”

有一种方法可以将长字符串转换为短加密并且能够转换吗?

例如:

new_encrypt("http://www.webtoolkit.info/javascript-base64.html")
Result: "431ASDFafk2"

6 个答案:

答案 0 :(得分:3)

编码不加密。如果您依赖于此安全性,那么您将来会遭受非常严重的冲击。

Base 64编码用于将8位宽的数据转换为可以通过使用6或7位而不丢失数据的通信信道发送的格式。由于6位小于8位,编码的字符串显然会比原始字符串长。

答案 1 :(得分:1)

这个q / a可能有你想要的东西: An efficient compression algorithm for short text strings

它实际上链接在这里: http://github.com/antirez/smaz/tree/master

我没有测试它,只是找到了链接。

答案 2 :(得分:0)

首先,base64是一种编码标准,它不是为了加密数据,所以不要使用它。你的数据如此长的原因是输入字符串中的每6位,base64将输出8位。

没有任何形式的加密会直接输出缩短的字符串。在最好的情况下,结果将同样长。

该问题的解决方案是对您的字符串进行gzip然后对其进行加密,但是使用您的URL,zip格式的添加数据仍将最终使您的输出比输入更长。

答案 3 :(得分:0)

有许多不同的加密/解密算法。您可以查看以下文档:http://www.php.net/manual/en/function.mcrypt-list-algorithms.php(这使用不同算法的mcrypt)。

...但是,你不能强迫某些东西变得非常小(取决于你想要的尺寸)。加密的字符串需要具有可用于解密它的所有信息。无论如何,base64字符串不是那么长(例如与真正安全的盐渍哈希相比)。

我没有看到问题。

答案 4 :(得分:0)

嗯......您可以尝试使用md5()uniqid()

第一个生成字符串的md5哈希值。

md5("http://www.webtoolkit.info/javascript-base64.html");

http://php.net/manual/en/function.md5.php

第二个生成13个唯一ID,然后您可以在字符串和该ID之间创建关系。

http://php.net/manual/en/function.uniqid.php

P.S。我不确定你想要达到的目标,但这些解决方案可能会让你满意。

答案 5 :(得分:0)

你可以有创意,只做一些事情'加密网址,以便它不容易,但编码/解码能够..

像反向字符串...
或者有一个随机的3个字母,你的字符串用base64编码或只是替换字母的数字或数字字母,然后再用3个随机字母..一旦你知道了食谱,就可以做并撤消它。

    $keychars = "abcdefghijklmnopqrstuvwxyz0123456789";
    $length = 2;
    $randkey = "";
    $randkey2 = "";
    for ($i=0;$i<$length;$i++)  $randkey .= substr($keychars, rand(1, strlen($keychars) ), 1);