MD5 Hash + Salt的密码存储方式实现
来源:互联网 发布:审计软件 编辑:程序博客网 时间:2024/06/05 16:37
MD5算法是一种密码散列算法,MD5散列后的数据长度为128 bit,该散列算法在密码上使用得非常多。但现在已经被更安全的SHA-1代替,MD5算法产生的密码可以使用反向查询的方式从预先算出的密码MD5库中查到密码,网上的一些MD5库中大约有上亿到上百亿条密码数据。针对这种破解方式,对密码在存储过程中经过Salt,即加盐后存储的方式可以有效增加反向查询的难度。
Salt(盐值)是一组随机数据,长度为几个字节,比较安全的密码存储算法要求盐值至少在8 Bytes以上。盐值的产生要求使用安全的随机数算法,例如Java中使用SecureRandom算法产生的随机数就是安全的随机数算法。
MD5 Hash + Salt存储密码的过程如下:
- 产生Salt值,即使用安全随机数算法,产生随即盐值,最好直接产生随机Byte,安全的密码要求盐值在8 Bytes以上。
- 将用户密码的Bytes与盐值的Bytes组合在一起,形成Password + Salt或Salt + Password的Bytes数组。Password和Salt顺序任意,但解密时也要相同顺序。
- 对上述Password + Salt计算MD5值,得到MD5的Bytes
- 见Salt与上述算出的MD5 Bytes组合在一起,成为 Salt + MD5 Bytes
- 使用Base 64算法或转为16进制字符串的方式将上述组合后的Bytes转换成为字符串,转换之后即可存储到数据库中。
上述Hash + Salt的密码存储方式是比较有效的对抗从MD5库中查询到密码的方式,在大型系统使用较多。如果需要在更加安全的场合使用,可以将MD5算法更改为SHA-1算法,增加Salt值的长度等方式。
0 0
- MD5 Hash + Salt的密码存储方式实现
- 如何安全的存储密码 - hash、salt 以及更多
- .NET实现Salt+Hash密码加密
- 关于MD5,SALT与SHA1的部分HASH算法解析
- 网站密码加salt存储
- 使用 Salt + Hash 将密码加密后再存储进数据库
- 使用 Salt + Hash 将密码加密后再存储进数据库
- 使用 Salt + Hash 来为密码加密
- 使用 Salt + Hash 来为密码加密
- 使用 Salt + Hash 来为密码加密
- 【Python】Hash+随机salt - 密码加密
- ecshop重置后台密码MD5+salt
- 加盐hash保存密码的正确方式
- 加盐hash保存密码的正确方式
- 加盐hash保存密码的正确方式
- 加盐hash保存密码的正确方式
- 加盐hash保存密码的正确方式
- 加盐hash保存密码的正确方式
- JavaScript数字转换为中文的方法
- 最大公约数与最小公倍数(C++)
- Apache traffic server 配置文件records.config的官方文档
- 线程局部存储实现
- ios、Android界面适配,欢迎大家一起补充,探讨
- MD5 Hash + Salt的密码存储方式实现
- 我的Android广告平台选择经历
- jquery中this与$(this)的用法区别.和于js中的this区别
- TWaver自动化设计平台Legolas —— 交互事件响应动作
- 正则表达式 \b \b的用法
- Hashmap
- 简单说说WebHDFS和HttpFS
- oracle developer使用流程图解
- android 调用onPrepareOptionsMenu问题