开发者社区 问答 正文

密码md5加密问题

用户登录的模块,现在已经完成了.但是由于密码是明文存在数据库的,
现在需要改为md5 加密,然后登录,希望给为前辈给点指导,最好是有源码的,谢谢。
(关于为什么用md5,之前也了解过一点,登录加密的用这最好。如果你们有更好的加密方式,也欢迎提出来)。

展开
收起
蛮大人123 2016-02-22 14:16:42 2895 分享 版权
2 条回答
写回答
取消 提交回答
  • MD5加密也称消息摘要算法,是通过不可逆散列函数实现。用在密码上,主要为了防止数据库泄露,通过md5加密后,即使密码泄漏也无法还原原始密码。但是,目前网上有大量站点提供md5破解服务,主要利用彩虹表(大型密文-明文映射数据库),所以千万不要用自己的密码在网上加密(加密后会存储至彩虹表)。同时网站开发人员应该采用其他手段,如加盐(在原密码后加入复杂随机的数字,在进行md5)处理,能有效对抗md5破解
    2019-07-17 18:46:39
    赞同 展开评论
  • 我说我不帅他们就打我,还说我虚伪

    $salt = sha1(uniqid(mt_rand(), true));
    $pwd_db = sha1($salt.sha1($pwd_user));
    $salt是用户注册时生成一个随机盐值.
    $pwd_db是数据库保存的加盐的密码哈希.
    $salt和$pwd_db都存到用户表中.
    其中:
    uniqid获取一个带前缀(mt_rand),末尾带熵(true),基于当前时间微秒数的唯一编号.
    mt_rand用于生成更好的随机数.
    sha1生成的字符串的长度是40位,字段类型可以设为char(40).

    2019-07-17 18:46:39
    赞同 展开评论