我正在运行一个带有用于用户身份验证的ProFTPD后端的MySQL服务器。
用户的密码目前是纯文本的。我的目标是,所有的用户都将加密的密码存储在数据库中。
我知道,当我想从一个用户加密一个密码时,我可以输入SQL命令:
update users set password= md5('MyPassword') where password="myPassword"; 但是如何加密所有用户的所有密码呢?
我希望任何人都能帮我。
发布于 2017-01-25 19:27:32
update users set password= md5('MyPassword') where password="myPassword"; 使用MD5作为散列是不安全的。不建议使用MD5
安全的哈希算法有PBKDF2、bcrypt、scrypt等。此外,所有的散列算法都必须与salt一起使用。@Gerald为这个主题发布了一个非常好的链接:https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
这里的问题是,这些保存哈希算法都不是在mysql中实现的。在module模块中,PBKDF2在ProFTPD中有一种身份验证模式。但是,OOTB不可能在mysql数据库中生成一个PBKDF2散列密码,或者一个密码,该密码使用另一个安全算法进行散列。
一个可能的解决方案是使用PHP创建一个HTML页面。PHP具有默认实现的函数,用于生成安全的散列密码。
我在ProFTPD论坛上问,如果有人知道另一个,也许更好的答案,对这个问题:https://forums.proftpd.org/smf/index.php/topic,12110.0.html
是的,我知道最初的问题是,一个人怎么能用一个命令同时散列我数据库中的所有密码。但我认为,首先,我应该寻找一个安全的哈希算法。
https://serverfault.com/questions/828043
复制相似问题