【发布时间】:2012-09-17 01:02:11
【问题描述】:
我在我的登录模型中实现了用于解密/加密用户密码的功能(在加密版本中存储在 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;
}
【问题讨论】:
-
你在哪里定义
$decryptedText?在函数中没有赋值,既不是参数也不是全局的。 -
Everything你are尝试to做是wrong.请停止你正在做的事情并了解正确的密码存储和处理。
-
“在解密版本中存储在 cookie 中” - 我非常希望这是一个错字。
-
@holyredbeard 以不同的方式了解它们。这就像通过射击自己的脸来了解枪支一样。
-
一个建议:下载这个库来处理你的 PHP 密码:github.com/ircmaxell/password_compat——这个库将被嵌入到 PHP 的下一个版本(5.5)中,作为处理密码加密的标准推荐方法。同时,使用可下载的版本,而不是尝试编写密码加密处理。 (另请参阅h-online.com/open/news/item/… 参考)
标签: php string int whitespace mcrypt