84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
小弟需要写一个用户登录的模块,现在已经完成了...但是由于密码是明文存在数据库的,
现在需要改为md5 加密,然后登录,希望给为前辈给点指导,最好是有源码的,谢谢。(关于为什么用md5,之前也了解过一点,登录加密的用这最好。如果你们有更好的加密方式,也欢迎提出来)。
小伙看你根骨奇佳,潜力无限,来学PHP伐。
$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).
加salt现在主流的用户密码加密都要加salt, 因为md5的rainbow table已经包括绝大多数11位一下的"弱密码"了.而且随着多个大型网站的数据泄漏. md5被爆破的风险更大了. 甚者可以用md5的hash来找到一个人的常用网站.
伪代码:
md5(password + salt)
Java里没有md5相关的包吗?反正PHP一个函数md5()就搞定了^﹏^
用md5没有什么问题,也是业内常用方案。需要注意的一点是在对密码进行md5加密之前,最好进行加盐操作,否则弱密码的安全性是极差的。
看看 Web应用的安全登录认证,虽然是 C# 的,Java 类似。
楼主只说数据库中不要存放明文,就是网数据库存的时候调用一下加密方法存进去不就可以了么?加密方法前端后端都有。
就像 savokiss 所述的md5(md5(password)+salt)已经是比较好的方案了。要更高安全性可以考虑 Bcrypt 之类的。盐最好不要只是重复的字符串,用 id, username, timestamp 等都不错。
md5(md5(password)+salt)
要加盐~要加盐~要加盐~重要的事情说三遍。
dz里用的:
salt就是盐,可以全局一样也可以每个用户唯一,是数据库里的一个字段
md5不可逆,但是可以字典穷举,所以单层md5穷举破解很容易,而加了盐只知道你加密后的密码不知道盐也没用咯
其他加密方式可以看下破解md5的那个网站,网站名就不说了
$salt是用户注册时生成一个随机盐值.
$pwd_db是数据库保存的加盐的密码哈希.
$salt和$pwd_db都存到用户表中.
其中:
uniqid获取一个带前缀(mt_rand),末尾带熵(true),基于当前时间微秒数的唯一编号.
mt_rand用于生成更好的随机数.
sha1生成的字符串的长度是40位,字段类型可以设为char(40).
加salt
现在主流的用户密码加密都要加salt, 因为md5的rainbow table已经包括绝大多数11位一下的"弱密码"了.
而且随着多个大型网站的数据泄漏. md5被爆破的风险更大了. 甚者可以用md5的hash来找到一个人的常用网站.
伪代码:
Java里没有md5相关的包吗?反正PHP一个函数md5()就搞定了^﹏^
用md5没有什么问题,也是业内常用方案。
需要注意的一点是在对密码进行md5加密之前,最好进行加盐操作,否则弱密码的安全性是极差的。
看看 Web应用的安全登录认证,虽然是 C# 的,Java 类似。
楼主只说数据库中不要存放明文,就是网数据库存的时候调用一下加密方法存进去不就可以了么?
加密方法前端后端都有。
就像 savokiss 所述的
md5(md5(password)+salt)
已经是比较好的方案了。要更高安全性可以考虑 Bcrypt 之类的。
盐最好不要只是重复的字符串,用 id, username, timestamp 等都不错。
要加盐~要加盐~要加盐~重要的事情说三遍。
dz里用的:
salt就是盐,可以全局一样也可以每个用户唯一,是数据库里的一个字段
md5不可逆,但是可以字典穷举,所以单层md5穷举破解很容易,而加了盐只知道你加密后的密码不知道盐也没用咯
其他加密方式可以看下破解md5的那个网站,网站名就不说了