PHP.net 说 md5() 和 sha1() 不适合密码?

发布于 2024-12-14 22:37:50 字数 235 浏览 1 评论 0原文

http://www.php.net/manual/en /faq.passwords.php#faq.passwords.fasthash

我将用户密码以哈希形式存储在 MySQL 数据库中。这是否意味着这样做不安全?如果是,我有什么选择?

http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash

I'm storing user passwords in a MySQL database in hash form. Does this mean that it is unsafe to do so? If it is, what are my alternatives?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

千年*琉璃梦 2024-12-21 22:37:51

正如您链接到的页面所建议的那样,请使用带有 Blowfish 算法的 PHP crypt() 函数。另外,每次调用 crypt() 时都使用不同的盐。您可以将盐值与密码存储在同一个数据库表中,以便稍后比较密码时可以使用它。

要使用 Blowfish 算法调用 crypt(),请使用以 $2a$ 开头的盐,后跟 04 到 31 之间的数字(“成本参数”),后跟 $,然后是字母表中的 22 位数字 ./0-9A-Za-z

PHP: crypt 手册 包含有关如何使用 的更多详细信息加密()

As the page you linked to recommends, use the PHP crypt() function with the Blowfish algorithm. Also, use a varying salt for each call to crypt(). You can store the salt values in the same database table as the password, so that it can be used when you compare the passwords later.

To call crypt() with the Blowfish algorithm, use a salt that begins with $2a$, followed by a number (the "cost parameter") between 04 and 31, followed by a $, and then 22 digits from the alphabet ./0-9A-Za-z.

The PHP: crypt manual contains more details on how to use crypt()

可可 2024-12-21 22:37:51

阅读链接的下一部分:如果常见的哈希函数不合适,我应该如何对我的密码进行哈希处理?

Read the next section of the link: How should I hash my passwords, if the common hash functions are not suitable?

吃颗糖壮壮胆 2024-12-21 22:37:51

有关为什么使用普通、无盐 MD5 进行密码散列不是一个好主意的具体示例,请尝试将一些相当常见的密码的 MD5 散列输入到诸如 md5decrypter.co.ukmd5hashcracker.appspot.commd5this.com。或者直接进入 Google对大多数此类网站建立索引(还有许多其他网站)。

For a concrete example of why using plain, unsalted MD5 for password hashing is a bad idea, try entering the MD5 hashes of some reasonably common passwords into a site like md5decrypter.co.uk or md5hashcracker.appspot.com or md5this.com. Or just into Google, which indexes most of those sites (and many others too).

白况 2024-12-21 22:37:50

您链接到的常见问题解答中的下一个问题对此进行了讨论:如何如果常见的哈希函数不合适,我应该对密码进行哈希处理吗?

来自常见问题解答:

对密码进行哈希处理时建议使用的算法是 Blowfish,因为它的计算成本明显高于 MD5 或 SHA1,但仍具有可扩展性。

接下来的问题是关于盐的。

The next question in the FAQ you linked to discusses it: How should I hash my passwords, if the common hash functions are not suitable?

From the FAQ:

The suggested algorithm to use when hashing passwords is Blowfish, as it is significantly more computationally expensive than MD5 or SHA1, while still being scalable.

The question following that is about salt.

¢好甜 2024-12-21 22:37:50

之前已经回答过很多次了。您可以使用 SHA-256 http://php.net/manual/en/function .hash.php 但你还应该在对密码进行哈希处理之前对密码加盐,并且你可以迭代地对密码进行哈希处理 - 因此,在不太可能的情况下,它被破解,它只会显示另一个哈希值(换句话说,破解密码需要花费很多时间更长)。

Has been answered many times before. You can use something like SHA-256 http://php.net/manual/en/function.hash.php but you should also salt the password before hashing it and you can iteratively hash the password - so in the unlikely event it is cracked it will only reveal another hash (in other words, cracking the password takes much longer).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文