加密 - 字符串腐败

时间:2013-04-12 12:26:12

标签: php url encryption

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

通过腐败,我的意思是,当字符串被加密然后解密输出与输入不同时,输出变得完全乱七八糟。

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

0 个答案:

没有答案