sách gpt4 ăn đã đi

PHP Blowfish 困惑

In lại 作者:搜寻专家 更新时间:2023-10-31 22:09:27 25 4
mua khóa gpt4 giày nike

我一直在研究在 php 应用程序中保护密码的更好程序。形式上我会使用类似的东西(只是一个例子,不要开枪!):

$salt = md5(rand() . md5(rand() . '$%E$%SDRT');
$password = md5('supersecret', $salt);

然后我会为数据库中的每个密码生成不同的盐,以防止使用彩虹表。

虽然看起来大多数(明智的)人都在转向 bcrypt(),但在网上查看。关于它如何工作、为什么工作等有很多问题,但我不明白的是它如何更安全?请注意,我在这里可能对我的理解感到困惑

据我了解,当您使用 crypt($pass, $salt) 时,salt 实际上用作 crypt 的指示器,告诉它使用什么算法。根据 php 手册,您使用“$2a$07”,它告诉 crypt 在 log2 轮次使用河豚。然后它吐出一个包含盐作为前缀的字符串。

手册中的示例:

Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi

似乎所有密码的盐都保持不变。我不明白这是如何安全的。黑客似乎更容易找到盐(甚至不需要从盐柱中取出),并且开始时有一个信标指示使用的轮数和算法。这怎么能更安全?我知道更多的回合对硬件造成更高的损失,使其可扩展并增加破解密码所需的时间(由于成本),但它也确切地表明它是如何完成的。

此外,我喜欢自己编写尽可能多的应用程序代码,以便更好地了解工作原理,并且如果可能的话,我宁愿远离 openwall。我不喜欢依赖其他人的代码并吸收他们的漏洞。我宁愿为自己的漏洞负责,自己修复。

还有一件事。如果增加轮数,这是否意味着当前密码哈希值将与数据库中的哈希值不匹配?您是否必须重置所有用户的密码,或者在他们下次登录时慢慢将他们移至新的轮数?

正如我所说,这只是我的理解,因此可能只是我的理解有所混淆。我不认为这是您可以“尝试并失败”的情况之一,因为如果您失败了,您看到的可能不仅仅是一个损坏的应用程序...

我一直在阅读的内容:

What is the correct format for a blowfish salt using PHP's crypt?
PHP Manual - Crypt
Openwall phpass
How to create and store password hashes with Blowfish in PHP
How do you use bcrypt for hashing passwords in PHP?

câu trả lời hay nhất

据我了解,您的问题是“为什么使用变量 salt 进行散列更安全?”。

只有一件事:它始终是暴力破解,如果盐值不变,则可以仅用一次暴力破解循环“破解”所有密码。 (如果哈希等于数据库中的 1 - 我们知道用户密码)。

对于简单的 md5() 和 sha1() 哈希函数,还可以将生成的强制密码哈希值存储在数据库中(以供将来使用)。这种方法允许黑客在几秒钟内确定几乎所有的密码。

关于PHP Blowfish 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433843/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress