我正在运行带有MySQL后端的ProFTPD服务器进行用户authentication。
用户的密码目前是纯文本的。 我的目标是,所有的用户都有encryption存储在数据库中的密码。
我知道,当我想要从一个用户encryption一个密码时,我可以inputSQL命令:
update users set password= md5('MyPassword') where password="myPassword";
但是,我怎样才能encryption所有用户的所有密码?
我希望任何人都可以帮助我。
update users set password= md5('MyPassword') where password="myPassword";
使用MD5作为散列不是保存。 MD5已被弃用
保存哈希algorithm是PBKDF2,bcrypt,scrypt等。另外所有的哈希algorithm都必须和salt一起使用。 @Gerald Schneider发布了一个非常好的链接: https ://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
这里的问题是,这些保存哈希algorithm都没有在MySQL中实现。 在mod sql模块的ProFTPD中有一个PBKDF2的authentication模式。 但是,在OOTB中,你无法生成一个PBKDF2散列密码,或者一个密码,这个密码在另一个保存algorithm中被散列在一个mysql数据库中。
一个可能的解决scheme是用PHP创build一个HTML页面。 PHP具有默认实现的函数,用于生成保存散列密码。
我在ProFTPD论坛上问,如果有人知道另一个,也许更好的答案,问题: https : //forums.proftpd.org/smf/index.php/topic,12110.0.html
是的,我知道最初的问题是,我怎样才能用一个命令一次性在数据库中散列所有的密码。 但是我想,首先,我应该看看我能find一个保存哈希algorithm。