【发布时间】:2016-09-02 21:03:09
【问题描述】:
我已使用以下说明安装邮件服务器: http://www.geoffstratton.com/ubuntu-mail-server-postfix-dovecot-and-mysql
现在我正在尝试用 PHP 编写登录表单,但不知道如何将输入的密码与保存的密码进行比较。
这是密码加密的mysql代码:
ENCRYPT('PASSWORD', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16)))
我不明白它是如何工作的,因为每次调用这个函数都会生成一个全新的字符串。
这是我目前所拥有的:
crypt($_POST[‘password’], '$6$'.substr(sha1(rand()), 0, 16))
但正如我所说的每次我得到一个新字符串。
【问题讨论】:
-
对于 PHP 使用 password_hash 和 password-verify,请参见以下内容了解原因: 仅使用哈希函数是不够的,仅添加盐对提高安全性无济于事。相反,iIterate over an HMAC with a random salt for about 100ms duration and save the salt with the hash.使用 PBKDF2、password_hash、Bcrypt 等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。
标签: php mysql encryption sha512 dovecot