如何加密我的mysql表中所有数据集的密码?

如何加密我的mysql表中所有数据集的密码?

我正在运行一个带有 MySQL 后端的 ProFTPD 服务器,用于用户身份验证。

用户的密码目前都是明文的。我的目标是,所有用户的密码都以加密形式存储在数据库中。

我知道当我想加密一个用户的密码时,我可以输入 SQL 命令:

update users set password= md5('MyPassword') where password="myPassword"; 

但是我如何加密所有用户的所有密码?

我希望有人能帮助我。

答案1

update users set password= md5('MyPassword') where password="myPassword"; 

使用 MD5 作为哈希值并不安全。MD5 已弃用

安全的哈希算法有 PBKDF2、bcrypt、scrypt 等。此外,所有哈希算法都必须与盐一起使用。@Gerald Schneider 为这个主题发布了一个非常好的链接:https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords

这里的问题是,这些保存的哈希算法都没有在 mysql 中实现。ProFTPD 中的 mod sql 模块中有一个针对 PBKDF2 的身份验证模式。但是,在 mysql 数据库中,您无法直接生成 PBKDF2 哈希密码或使用另一种安全算法进行​​哈希处理的密码。

一种可能的解决方案是使用 PHP 创建 HTML 页面。PHP 具有默认实现的函数,用于生成安全的散列密码。

我在 ProFTPD 论坛上询问是否有人知道针对该问题的其他更好的答案: https://forums.proftpd.org/smf/index.php/topic,12110.0.html

是的,我知道最初的问题是,如何用一个命令一次性哈希数据库中的所有密码。但我认为,首先,我应该寻找一种安全的哈希算法。

相关内容