【Spring Security系列】Spring Security密码加密

密码安全是互联网安全的一个缩影,我们在享受互联网服务的同时,也应当对它投入更多的关注。

1.密码安全的重要性

2011年12月,国内某开发者社区网站被黑客“拖库”,600多万个密码明文存储的用户账号被公开, 大量用户直接面临数据隐私泄露和数据安全的双重威胁。

这次事件为我们敲响了警钟,一旦发生“拖库”,如何尽可能地减少用户的损失,在每一个系统中 都不应被忽略。从开发者的角度而言,可以落实在如何安全存储用户密码上。

为什么要安全存储用户密码呢?当被“拖库”时,当前系统的所有数据就成为既定损失,如果用户 的密码同时被泄露,且未做加密,那么即便及时修复了“拖库”的问题,后续也可能会导致扩散性损 失。因为黑客手里还握着大量的用户密码,安全威胁随时都在,这时能做的只能是紧急升级系统,强 制所有用户验证手机号码或邮箱,并重置密码方能再次进入,这显然很被动。如果在系统开发之初就 有安全存储用户密码的意识,则能有效防止这种情况。

2.密码加密的演进

安全存储用户密码很多时候都是使用加密的方式来进行的。提到加密,诸如 MD5SHA等摘要算 法通常会第一时间浮现在我们脑海里,尽管它们并非真正的加密(不可逆)。例如,在密码加密这个 场景下,对用户密码进行 MD5运算后再存储就是一种看起来可行的思路,只要在每次登录验证时,对 用户提交的密码进行同样的 MD5运算,然后与数据库中存储的值进行对比即可。

事实上,尽管摘要算法无法通过逆运算获得原文,但由于摘要值有限(MD5算法最多只能表示36 的16次方个摘要值),而原文无限,所以一定存在两个甚至更多个不同数据通过运算得到同一摘要值 的情况,即存在被“碰撞”的可能。

除“碰撞”外,最直接的破解方式是构建反查表。相同串(密码)经过 MD5运算后一定会得到同一个值,于是有些人便制作了这样一张表。

$2a$10$nlvQs9oQOSxc2gBX5xjj..UtjxpcGODTNVYNoftX2roCobzV7nRrK 123456
$2a$10$NVdFHCDHD/QCpri5OouS2OWVsYkxHkrThveL7IQ4oElPUZ//oUKEi admin
$2a$10$dGwcC1Ii4QKUYoQMKXmv4ehCoeBj9iPcDTdOkLVvJ1DDwj0ASdbwW qwerty
$2a$10$Fp5b4I0t0djgimab.BqJp.k3UAdpuOM1iOn6GyC2V44LGpAokzGrO 5201314

这张表穷举了几乎所有的常用密码,专门用于实现MD5(其他散列算法同理)的快速反查(MD5 分为32位和16位,事实上,除了长度没有其他区别。将32位的前8位和后8位去掉即可得到16位,生成 表时自然会选择位数少的,这样空间占用小)。如果我们的密码恰好被反查表

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值