MySQL-如何实现服务器端密码哈希

标签 mysql bcrypt password-hash

我正在创建一个数据库,我需要存储用户密码。我已经在客户端使用 bcrypt 对密码进行哈希处理,但我读到,就数据库而言,只有在客户端进行哈希处理才能使哈希值本质上等同于密码。我想在将密码存储到数据库之前再次对密码(现在是哈希值)进行哈希处理。我是否必须使用 MySQL 原生的方法,例如 SHA2(pwd),还是有办法在服务器上使用 bcrypt?

最佳答案

Bcyrpt 在这里是一个很好的调用,但是您应该在服务器端而不是客户端上进行哈希处理。客户端无法知道生成可验证其正确性的哈希所需的所有信息,只有服务器拥有该信息。

您需要做的是安全地传递密码(例如通过 HTTPS),并在应用程序层对其进行哈希处理。 MySQL 本身不具备进行正确密码散列所需的功能。 SHA2 是完全不够的,它是一种高速哈希设计,这使得它立即不适合。密码散列算法故意变慢,使暴力破解密码变得非常昂贵。

关于MySQL-如何实现服务器端密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42848556/

相关文章:

ruby-on-rails - 是否可以单独访问bcrypt盐?

javascript - bcrypt.compare 是否容易受到定时攻击

php - 无法使用 PHP 将 passwordHash 发送到 MySQL 表

bcrypt 的.Net 实现,它实现了HashAlgorithm?

php - password_hash 仍然散列并存储一个 undefined variable

mysql - 将 2 周添加到日期 SQL

mysql - JavaFX 文本字段未使用 MYSQL 查询更新

java - JpaSpecificationExecutor JOIN + ORDER BY 规范

mysql - dbeaver mysql 访问被拒绝

ruby-on-rails - bcrypt_ext。所以(加载错误)