别用md5存密码,用这个。。。

几乎所有业务系统都会涉及账号登录功能,而密码的安全存储是软件设计者必须要考虑的问题,相信没人还在用明文保存吧。

但初学者甚至一些有经验的程序员还停留在自己实现加密算法或者是用md5这样的算法对用户的明文密码进行加密存储。

md5早在2010年,美国软件工程学会(SEI)就认为MD5算法已被破解,黑客可以使用彩虹表、暴力穷举进行hash碰撞就能轻易破解。因为md5,sha这样的算法速度过于太快,对于一个长度6位的密码在一台普通电脑上不到1分钟就能穷举出来。

所以md5,sha算法一般适用于做数据完整性检查,比如软件签名。

Bcrypt

而目前主流的安全的hash算法就是Bcrypt,它的速度非常慢,加密一次大概需要0.3秒, 这对于正常的业务场景中,0.3秒是完全能接受的。而md5只需要1微秒,两者速度上相差几十万倍。

图片3111490-d12e59731291f022.webp

Bcrypt算法生成的值由4部分组成:

2a表示Bcrypt算法

rounds: 是轮值因子,代表执行hash的次数,数值越高越安全,默认是10

salt: 盐,一个128bits随机字符串,22字符
Hash: 经过明文密码盐salt进行hash得到的值

因为bcrypt采用了一系列各种不同的Blowfish加密算法,并引入了一个 rounds factor,这个轮值因子决定了这个算法的代价有多大。这个算法不会因为计算机CPU处理速度变快而导致算法的时间变短。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值