我有一个邮件服务器,它将邮箱密码存储在mysql数据库中,并使用以下SQL语句:
ENCRYPT([PASSWORT], concat(_utf8"$1$", right(md5(rand()), 8), _utf8"$"))
但是数据库中没有存储盐。现在我需要围绕这个数据库建立一个登录流程,但由于缺少盐,比较存储的密码很困难。我注意到,密码哈希本身以以下形式保存盐:
$1$[SALT]$[PASSWORD-HASH]
如何创建一个可比较的密码哈希来构建登录系统?
Dovecot能够使用存储的密码来登录用户,但是它是如何实现的呢?
ENCRYPT()
不是哈希函数。你应该使用bcrypt、scrypt或PBKDFv2。 - SLaks