常见的前端加密方法

Posted by Futari on 2021-03-27
Estimated Reading Time 3 Minutes
Words 833 In Total
Viewed Times

对称加密:

加密和解密使用的是同一个密钥,计算量小,常见的DES、AES

1
2
3
4
5
优点:计算量小,简单快速,适合于对海量数据进行加密处理;

缺点:加密人和解密人需要拥有同一把秘钥,那秘钥如果通过 不安全的通道进行传输,就存在被黑客窃听的风险,安全性丧失;

同时双方还需要好好管理秘钥,不能泄露秘钥,否则也不安全了,管理秘钥成本较高。

非对称加密:

需要公钥和私钥,公钥对数据进行加密只能用私钥解,常见的:RSA、RCC椭圆曲线加密算法

ps:所以在实际应用场景中,一般把 秘钥 采用非对称加密,数据采用对称加密。

1
2
3
优点:消除了用户交换密钥的需要,安全性提高;

缺点:加密、解密耗时较长;

Hash算法:

MD5和SHA。SHA又包括 SHA-1 和 SHA-2(SHA-224、SHA-256、SHA-384、SHA-512) 和SHA-3。

MD5直接加密 ( Message-Digest Algorithm-信息摘要算法),种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

特点:a、压缩性:任意长度的数据,可以算出固定长度;

​ b、不可逆:只有加密,没有对应的解密算法;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//演示下在vue项目中使用MD5
//step1 安装依赖
npm install js-md5 -S

//step2 在main.js 全局引入
import md5 from 'js-md5';
Vue.prototype.$md5 = md5;

//step3 在逻辑中使用
this.$md5('password');

//实际开发中,可能整个项目只有登录的时候会用到MD5,这时建议采用单页面引用,安装依赖之后,在登录组件引入插件
import md5 from 'js-md5';
let pw = md5('password');//使用

//在非vue项目中,下载好md5.js后使用script标签引入即可
<script src="js/md5.js" type="text/javascript"></script>

MD5加盐

MD5直接加密虽然不可逆,但抵不住网上大把解密网站,通过事先存储各种字符组合的 Hash 加密结果,然后提供查询;即使是两层的 md5 加密也有可能通过彩虹表的方式进行破译,所以MD5直接加密已经不够安全,这时候就需要给密码加盐,以降低被破译的风险;加盐就是人为的通过一组固定字符或随机字符与用户原密码组合形成一个新的字符。

SHA-256

SHA256算法使用的哈希值长度是256位。这是一个抽象类。此类的唯一实现是SHA256Managed;

ps:这里简单介绍了前端加密,需要注意的是,对于用户密码而言,不能因为前端加密了,后端就直接把前端加密得到的字符串直接存储到数据库,这是很危险的,前后端都要进行加密!比如前端MD5加密之后,后端进行第二次md5加密后再把密码存进数据库,这样即使用户密码在传输过程中被窃听,黑客也无法进行登录,因为被窃听的密码和数据库存储的密码不匹配。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !