Apr
17
2017
PHP密码加盐Hash
加盐Hash:
$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM)); $password=sha1($register_password.$salt);
解释:
- 使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数。
- 把得到的随机数通过base64加密,使其变长并且不利于猜解。
- 把得出的盐拼接到密码的后面,再对其使用sha1进行哈希,再把password存入到用户的数据库。
PS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣。
为何不用MD5?因为长度不够。
为何没有使用多次HASH?因为这样反而容易发生碰撞。
HASH好之后怎么使用“腌制”好的密码?
用户注册->提交密码->产生salt->腌制好的密码存入数据库->salt存入数据库。
用户登录->提交密码->调用salt接到提交密码的后面->进行HASH->调用之前注册腌制好的密码->对比HASH值是否和这个密码相同
发表评论: