我最近注意到我们应用程序中的一些链接正在损坏......
通过破坏,我的意思是,当字符串被加密然后解密时,输出与输入不同,输出变成一团乱麻。
function encode($string) {
$key = 'Gt88ggjJI_987JKbgKHIfgIKhOknoUa6';
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
function decode($string) {
$key = 'Gt88ggjJI_987JKbgKHIfgIKhOknoUa6';
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
请原谅函数名称,我知道 (en|de)coding 和 (en|de)crypting 之间的区别。不幸的是,由于遗留原因,它需要被称为。
有时 $string 是通过 URI GET 发送的(不,它不包含非常敏感的信息,让我们继续话题吧),当它通过 GET 发送时:
href="/path/to/thingy/?x=<?= urlencode(encode('my amazing string')); ?>"
和接收端的PHP,自动urldecode,然后:
$string = decode($_GET['x']);
但可悲的是,大约 400 分之一的加密/解密输出是错误的。谁能伸出援助之手或解释我哪里出错了?
有时,当通过 cookie 发送字符串时,它也会损坏。这是否与功能、urlencode 或客户端浏览器由于互联网连接不稳定而无法正确发送数据有关?