PHP中的加密函数输出意外字符

PHP中的加密函数输出意外字符,php,cookies,mcrypt,Php,Cookies,Mcrypt,我使用simple_encrypt在cookie中存储一些敏感信息。当我尝试用simple_decrypt解密它时,它不会给出相同的字符串。当我尝试在简单的_解密后输出该字符串时,我会得到带有如下符号的字符�. 怎么了 $salt ='sososo222xxxXXsder3FVRE'; function simple_encrypt($text) { global $salt; return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $

我使用simple_encrypt在cookie中存储一些敏感信息。当我尝试用simple_decrypt解密它时,它不会给出相同的字符串。当我尝试在简单的_解密后输出该字符串时,我会得到带有如下符号的字符�. 怎么了

$salt ='sososo222xxxXXsder3FVRE';
function simple_encrypt($text)
{
    global $salt;
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB);
}

function simple_decrypt($text)
{
    global $salt;
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB);
}
编辑: 我使用setcookiert,simple_encrypt$a['rt'],time+3600*24*365;储存饼干。我还把echo simple_encrypt$a['rt'];在设置烹饪之前,并得到它在饼干中的不同值。真是太神奇了…

试试这个:

function simple_encrypt($text)
{
    global $salt;
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB));
}

function simple_decrypt($text)
{
    global $salt;
    return base64_decode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB));
}

我在解密时得到了相同的字符串。你得到了不同的值吗?有什么不同的价值?与原始价值相比有什么不同?调试这么模糊的东西是不可能的。听起来像是字符集的不同。例如,如果您使用UTF8,则从客户端到服务器到数据库服务器到服务器到客户端到cookie的链的所有部分都必须使用UTF8。您需要在simple_decrypt中使用base64_decode,不是rtrim。查看我的更新答案,但我不知道这是否解决了他的问题problem@userNOID:解密操作应按相反顺序进行。即使你在穿鞋子之前先穿上袜子,你也需要先脱下鞋子。我认为其他地方有问题,因为你的代码在这里工作:试试:$newtext=simple_encrypt'hello';echo simple_decrypt$newtext@我明白这一点,并按正确的顺序进行了更改,但仍然得到了相同的结果。它不能和饼干一起吃。。。