我最近注意到我们的应用程序中的一些链接正在破坏......
通过腐败,我的意思是,当字符串被加密然后解密输出与输入不同时,输出变得完全乱七八糟。
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)编码和(en | de)加密之间的区别。不幸的是,由于遗留原因,需要对其进行调用。
有时$ string是通过URI GET发送的(并且它不包含非常敏感的信息,让我们继续讨论主题),当它通过GET发送时:
href="/path/to/thingy/?x=<?= urlencode(encode('my amazing string')); ?>"
和接收端的PHP,自动urldecode然后:
$string = decode($_GET['x']);
但遗憾的是,大约1/4的加密/解密输出是错误的。谁能伸出援助之手或解释我哪里出错?
有时当字符串通过cookie发送时,它也会破坏。这与函数,urlencode或客户端浏览器由于互联网连接不稳定而无法正确发送数据有关吗?