用户密码存储方式

php

浏览数:290

2019-1-7


用户密码存储方式

用户注册时: 

1)用户提供密码(以及其他用户信息); 
2)系统为用户生成Salt值; 
3)系统将Salt值和用户密码连接到一起; 
4)对连接后的值进行散列,得到Hash值; 
5)将Hash值和Salt值分别放到数据库中。 登录时: 
1)用户提供用户名和密码; 
2)系统通过用户名找到与之对应的Hash值和Salt值; 
3)系统将Salt值和用户提供的密码连接到一起; 
4)对连接后的值进行散列,得到Hash'(注意有个“撇”); 
5)比较Hash和Hash'是否相等,相等则表示密码正确,否则表示密码错误。 

 加密方式:md5(md5($password).$salt),$salt是一个6位随机数。 
 注册的时候,把用户的密码用md5(md5($password).$salt)加密,$salt是一个6位随机数字,
 下面是我的一个获取6位随机数的一个方法: 
     function randstr($len=6) { 
        $chars='abcdefghijklmnopqrstuvwxyz0123456789'; 
        mt_srand((double)microtime()*1000000*getmypid()); 
        $password=''; 
        while(strlen($password)<$len) 
            $password.=substr($chars,(mt_rand()%strlen($chars)),1); 
        return $password; 
    } 
     $salt=randstr();把randstr()赋值给$salt,然后用md5(md5(会员提交的密码).$salt)加密就可以了,但是千万不要忘了把$salt入库哦。 
     登陆的时候根据用户名把$salt取出来,用md5(md5(会员提交的密码).$salt)匹配密码,如果一样就登陆成功了