最族
PHP密码加盐Hash
2017-4-17 Veris


加盐Hash:

$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));  
$password=sha1($register_password.$salt);



解释:





  1. 使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数。


  2. 把得到的随机数通过base64加密,使其变长并且不利于猜解。


  3. 把得出的盐拼接到密码的后面,再对其使用sha1进行哈希,再把password存入到用户的数据库。




PS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣。



为何不用MD5?因为长度不够。



为何没有使用多次HASH?因为这样反而容易发生碰撞。



HASH好之后怎么使用“腌制”好的密码?



用户注册->提交密码->产生salt->腌制好的密码存入数据库->salt存入数据库。



用户登录->提交密码->调用salt接到提交密码的后面->进行HASH->调用之前注册腌制好的密码->对比HASH值是否和这个密码相同



发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容