php加密保存mysql_各位⽤php将密码存⼊数据库,都⽤什么
⽅法进⾏加密的?
LZ应该采⽤加盐HASH。
如何“腌制”密码呢?
=_,=
正确的格式应该是,⽤户password+动态的salt
动态的salt不能像2L所说的,使⽤microtime,因为时间在某些情况下不够随机,⽽且是可能被猜解的。
这⾥推荐⼀个我⽤的加盐HASH$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));
$password=sha1($register_password.$salt);
解释:
⾸先使⽤mcrypt,产⽣电脑随机⽣成的,专门⽤户加密的随机数函数。
第⼆步,把得到的随机数通过base64加密,使其变长并且不利于猜解。
第三步,把得出的盐拼接到密码的后⾯,再对其使⽤sha1进⾏哈希php远程连接mysql数据库
再把password存⼊到⽤户的数据库。
PS:为何不⽤静态的salt?没有必要,使⽤⼀个动态随机⾜够长的盐⾜矣。
为何不⽤MD5?因为长度不够。
为何没有使⽤多次HASH?因为这样反⽽容易发⽣碰撞。
HASH好之后怎么使⽤“腌制”好的密码?
⽤户注册->提交密码->产⽣salt->腌制好的密码存⼊数据库->salt存⼊数据库。
⽤户登录->提交密码->调⽤salt接到提交密码的后⾯->进⾏HASH->调⽤之前注册腌制好的密码->对⽐HASH值是否和这个密码相同
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论