为加密密码添加了空格?

时间:2012-09-25 13:39:20

标签: php string int whitespace mcrypt

我已在我的登录模型中实现了用于解密/加密用户密码(加密版本存储在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;
}

2 个答案:

答案 0 :(得分:3)

这是因为32字节是Rijndael 256的块大小(即32 = 256/8),解密数据用'\0'填充以匹配该长度。

要更正此问题,您可以删除这些字符:

return rtrim($decryptedText, '\0');

答案 1 :(得分:1)

删除空格使用php trim()函数

$password=trim($_COOKIE("value"));

它将从开头和结尾删除空格