我们有一个 PHP 应用程序,它只使用 MD5 函数(没有盐)存储密码。
我们将 OpenSSH 设置为使用pam-mysql对来自同一数据库的用户进行身份验证。
我们想改用散列密码,我们正在考虑: 1. 自己做,(类似md5($salt."$".$password)
or hash("sha256", $salt."$".$password)
),或 2. 使用 php 的 crypt 函数(如果可用,它使用 OS crypt(3))。
问题是我还没有发现 pam-mysql 是否支持 crypt(3) 或任何替代的 pam 模块。
crpyt(3)
使用用户提供的算法和 salt:crypt('password', '$5$saltstring$')
为其sha256
返回$5$saltstring$OH4IDuTlsuTYPdED1gsuiRMyTAwNlRWyA6Xr3I4/dQ5
. 使用该crypt(3)
库的任何语言都将看到该字符串并知道sha256
与给定哈希一起使用并期望给定结果。
第一种方法是否足够,或者是否有一些支持 MySQL 和 crypt(3) 的 PAM 模块?