在 PHP 中对查询字符串进行一行加密/解密


One line encrypt/decrypt of querystring in PHP

我正在寻找一个相当安全的单行PHP加密/解密函数(不仅仅是简单地使用base64进行混淆(,并且字符串可以通过GET传递而不会在另一端被破坏。

我尝试了以下内容,但解密的字符串没有任何运气:

$string = 'domain.com|path|lang|010502599040475829162|'.$_SERVER["REMOTE_ADDR"];
$encrypt = base64_encode(mcrypt_ecb(MCRYPT_DES, 'A41Hfls', $string, MCRYPT_ENCRYPT));

$decrypt = mcrypt_ecb(MCRYPT_DES, 'A41Hfls', base64_decode($_GET['encrypt']), MCRYPT_DECRYPT);
echo $decrypt;

输出: ~ K _ 8 E *撺p(특t' ;- &fۂp>Q r O 8 o f>?

首先尝试对字符串进行 url 解码

$encrypt = base64_decode(urldecode($_GET['encrypt']));
$decrypt = mcrypt_ecb(MCRYPT_DES, 'A41Hfls', $encrypt, MCRYPT_DECRYPT);

如果您从URL发送请求,则需要在服务器上执行以下操作。

$data_加密 = $_GET['data_encrypt'];

查找空格并将其转换为 +原因是当您使用 URL 向服务器发送请求时,有时会将 + 转换为空格。$data_encrypt= str_replace(" ","+",$data_encrypt(;

$data_decrypt=mcrypt_ecb(MCRYPT_DES,'A41Hfls',base64_decode($data_encrypt(, MCRYPT_DECRYPT(;

另一件事是启用 utf8 编码,您正在重新生成此输出。