gpt4 book ai didi

php - 为什么我的 PHP Blowfish 加密会产生如此奇怪的结果?

转载 作者:行者123 更新时间:2023-11-29 02:34:12 24 4
gpt4 key购买 nike

在听说 MD5 对于密码存储 (MySQL) 不安全之后,我决定将 PHP 的 crypt() 与 Blowfish 一起使用(如果您知道更好的算法请告诉我)。所以我随机生成一个 32 个字符的盐并加密给定的字符串。这是代码:

//Some variables
$text = $_POST['text'];
$salt = "";
$length = 32;
$chars = "abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZ123456789";
$numchars = strlen($chars);

//Random string generation
for ($i=0; $i <= $length; $i++)
{
$index = mt_rand(0, $numchars-1);
$salt .= $chars[$index];
}

//Encrypt $text using Blowfish
$encrypted = crypt($text, "$2a$12$" . $salt . "$");

我得到的结果真的很奇怪……有些配置很像这个,加密的结果连续包含多个美元符号 $。有了这段代码,$encrypted——结果——实际上包含了给定的盐,并且 $encrypted 前面是 Blowfish 指示符 $2a$

顺便说一下,我的 PHP 版本支持 Blowfish。下面是一个结果示例:

Encrypted "hello"
$encrypted: "$2a$12$az1aszWXtzw9R7Y4Iv97KeUPwcPG9pgx/CAW42F/67X64l60lMvGa"
$salt: "az1aszWXtzw9R7Y4Iv97KmM6miSXnecKB"

我做错了什么?感谢您的帮助。

编辑:哇,我刚想到一件事:我不应该总是使用相同的盐,还是应该随机生成一个盐并将其与每个用户帐户一起存储在 MySQL 中?

最佳答案

查看 http://us2.php.net/crypt ,示例 #3“使用具有不同哈希类型的 crypt()”。在示例输出中,它表明盐字符串也是加密值的一部分,因此盐是加密的一部分的问题似乎是设计使然。

关于php - 为什么我的 PHP Blowfish 加密会产生如此奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com