我已在我的登录模型中实现了用于解密/加密用户密码(加密版本存储在cookie中)的功能。一切正常,除非我重新启动浏览器并尝试通过cookie登录密码。
解析器告诉我这是错误的密码,即使我可以看到它是正确的,当我回应它。因此,我尝试了一个“strlen”来查看密码有多少个字符,并且它显示为32(!)。我唯一能想到的是(在这种情况下)增加了28个白色空间,这些空间无法通过回声看到。
如果有人能告诉我发生了什么以及如何解决这个问题,我真的很感激。
function decrypt($encrypedText) {
$key = "The secret key is";
$decryptedText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($encrypedText), MCRYPT_MODE_ECB);
echo $decryptedText; // "abcd" <- what I put in
echo strlen($decryptedText); // 32 (?)
return $decryptedText;
}
答案 0 :(得分:3)
这是因为32字节是Rijndael 256的块大小(即32 = 256/8),解密数据用'\0'
填充以匹配该长度。
要更正此问题,您可以删除这些字符:
return rtrim($decryptedText, '\0');
答案 1 :(得分:1)
删除空格使用php trim()
函数
$password=trim($_COOKIE("value"));
它将从开头和结尾删除空格