前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端动态加盐慢加密方案图解

前端动态加盐慢加密方案图解

作者头像
IMWeb前端团队
发布2019-12-04 17:01:00
1.2K0
发布2019-12-04 17:01:00
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb 张颖 原文出处:IMWeb社区 未经同意,禁止转载

加密:利用某种加密算法,将明文转换成无法简单识别的密文。

解密:利用相应的解密算法,将密文转换成可识别的明文。

密码破解:1、算法逆向破解(一般算法都是不可逆的);2、穷举暴力破解 3、查表,实际上表也是提前穷举跑出来的。

慢加密:提高加密时间来相应的加大破解时间和难度。

慢加密出现的原因:密码破解的时间和加密算法是直接关联的,例如 MD5 加密是非常快的,加密一次耗费 1 微秒,那破解时随便猜一个词组,也只需 1 微秒,攻击者一秒钟就可以猜 100 万个。如果加密一次提高到 10 毫秒,那么攻击者每秒只能猜 100 个,破解速度就慢了一万倍。提高加密时间有两种方法,一是多次加密,二是加大加密算法的复杂度。

但如果是服务器端加密,使用慢加密的网站,如果同时来了多个用户,服务器 CPU 可能就不够用了。所以前端加密在客户端拥有强大的计算能力的今天,逐渐被考虑。

慢加密过程:

破解方法: 暴力的穷举生成字典法

为了对抗这种破解方法,还得用经典的手段:加盐。加密过程中针对不同的用户引入不同的盐值,即可对抗这种常规的暴力穷举字典破解方法。

加盐慢加密:

这样,即使相同的密码,对于不同的用户,「慢加密结果」也不一样了。

由于用户的盐值也是需要存储在后台的,用户登录时,在输入用户名后,我们必须获取用户盐值才能加密明文密码进行提交验证:

为了更安全,可以定期的更换用户盐值:

由于不同的用户计算机的性能不一样,如何把握慢加密算法的强度很重要,如果用户计算机性能过差,而慢加密算法强度过高,会造成用户登录过慢的问题,所以设计加密算法时,可以根据用户侧的计算性能动态决定加密算法的强度,设此强度为S,在用户注册或登录时,可以根据用户计算性能检测程序段来设定强度S的值,此值会与用户名、密码以及盐值一同存在服务器上:

一般用户侧计算性能的评估也很简单,计算一定时间内的计算处理能力就行:

代码语言:javascript
复制
setTimeout(function() {
    flag = false;
    console.log(S);
}, 1000);

while(flag) {
    x = hash(x);
    S++;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-07-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档