0

我最近注意到我们应用程序中的一些链接正在损坏......

通过破坏,我的意思是,当字符串被加密然后解密时,输出与输入不同,输出变成一团乱麻。

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 或客户端浏览器由于互联网连接不稳定而无法正确发送数据有关?

4

0 回答 0