php - 加盐密码,特别是关于数据库和检索密码

标签 php mysql passwords password-encryption

我想创建一个成员(member)网站,所以我想让密码尽可能安全。我可以从包括这个在内的阅读网站看到 md5、sh1 加密是一个严重的否定。我见过一些其他的东西,比如 bcript、scrypt、sha256、sha512 和 PBKDF2。我发现了一些实现这些的 php 脚本,但没有真正发现与数据库有关的任何注意事项。

我是否必须创建包含盐的行?

验证密码是否必须执行类似 hash(salt+password) = $hash 的操作?

因为我在密码方面不是最有经验的,所以我不太确定最佳实践,当您对密码进行哈希处理 + salt 时会发生什么,如何检索密码...

我想是因为我不太了解它背后的逻辑,所以我对如何去做感到有点困惑。

最佳答案

如果您使用 Bcrypt、Scrypt 或 PBKDF2,盐是您获得的散列的一部分,所以不,您不必担心单独存储它。否则 (SHA-*),是的 — 但是您无论如何都不应该使用它们。 Bcrypt、Scrypt 和 PBKDF2 是实际的密码散列函数。

我推荐 Bcrypt,因为你标记了这个 .它是内置的。 Scrypt 不是。

关于php - 加盐密码,特别是关于数据库和检索密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13902580/

相关文章:

mysql - 选择高级方式的位置

php - 如果我输入隐藏的输入,为什么我的 while 循环不起作用

database - 安全存储无法加密的凭据

string - R中的密码生成器功能

ruby-on-rails-3 - Rails 3 在不注销的情况下设计更新密码

php - 需要有关 BLPOP Predis PHP 的支持

PHP 登录 REST API

java - MySQL更新查询产生空指针异常

php - PHP float 使用的最佳实践

PHP 显示数组键高 1 个数字