我们有一个PHP应用程序,只使用MD5函数存储密码(没有盐) 我们将OpenSSH设置为使用pam-mysql来验证来自同一数据库的用户。
我们想切换到使用散列密码,我们正在考虑:1。自己动手,(类似md5($salt."$".$password)
或hash("sha256", $salt."$".$password)
),或2.使用php的crypt函数(使用OS crypt(3)(如果有的话)
问题是我还没有发现pam-mysql是否支持crypt(3)或任何替换的pam模块。
crpyt(3)
使用用户提供的算法和盐crypt('password', '$5$saltstring$')
用于sha256
,返回$5$saltstring$OH4IDuTlsuTYPdED1gsuiRMyTAwNlRWyA6Xr3I4/dQ5
。任何使用crypt(3)
库的语言都会看到该字符串并知道使用给定哈希值sha256
并期望给定结果。
第一种方法是否足够,或者是否有一些PAM模块支持MySQL和crypt(3)?
答案 0 :(得分:0)
使用sha512,mysql实现或php实现。如果您使用md5,那么您将使用已知的不安全功能,这将使您承担责任。
答案 1 :(得分:0)
您也可以使用3DES加密来提高安全性。