密码加盐的设计理念

文章介绍了密码保护中的加盐技术,盐是一个字符串,用于与明文密码结合并哈希,防止暴力破解。通过使用随机生成的长盐可以增加破解难度,但盐也需要存储。作者提出了使用不可变的用户信息(如用户ID,注册时间)通过特定算法生成盐的新思路,以避免盐的直接存储。
摘要由CSDN通过智能技术生成

. 什么是盐

有些童鞋可能对这个名词还有些陌生,这个盐当然不是我们平时吃的盐,也不是化学中的盐,而是一段字符串,用于和明文串接在一起然后哈希得到密文。比如我的密码是sunny (这当然不是真的密码...),然后我的盐为abc,那么拼接在一起就可以是sunnyabc,然后以此哈希后存入数据库。当我再次登录的时候,再将我的密码加盐后哈希与数据库存储的密码比对。

为什么要加盐

我们从暴力破解说起,面对一个md5加密的密文,你会考虑这么破解。可以跑密码字典,也可以用查表法,包括反向查表,彩虹表之类的。其实本质都是暴力破解,只不过现场跑密码字典很慢,而用查表的话,特别是表的数据已经累计到一定程度之后,很可能一查一个准,就有点类似我们的缓存。所以我们需要加盐,即使通过一定的手段得到了明文,在不知道盐的情况下,也会增加一定的破解负担。

如何加盐

如何加盐其实主要指的是如何选择盐,通常盐的长度需要较长,短盐的效果可能不是那么好。其实通常各种资料里会建议用一个随机生成的盐。这样能确保每个密文的盐尽量不同,增加破解难度。使用随机生成的盐也是有一定的弊端,较大的弊端就是,这个盐也必须存储,所以也是有机会获取的。所以,我在这里就提出一种思路,至于好不好大家可以讨论一下。首先,考虑生成的盐是每个用户有所区别的。这一点很重要,作用类似于随机生成的盐。然后,考虑这个盐不能进行存储,而是可以用现有的用户信息进行生成。这样其实已经很明显了,可以用某种算法利用当前用户的信息(必须是固定不会修改的信息),比如用户id、用户注册时间等。这个算法也可以是哈希加密算法,比如将用户的几个信息进行一定的排序处理之后利用哈希生成盐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值