使用较多的有两种辅助插件
方法一: jsencrypt.js(RSA)
方法二:crypto.js (AES)
jsencrypt封装工具类方法
AES
1.对称加密:即加密和解密使用同一个密钥。
2.加密速度快
3.适合数据比较长时的使用
4.密钥长度:密钥最长只有256个bit
5.密钥管理:要求在通信前对密钥进行秘密分配,解密的私钥必须通过网络传送至加密数据接收方;
RSA
1.非对称加密:即有两个密钥,加密用公钥,解密用私钥(其中公钥可以公开)
2.加密速度慢
3.不适合大量数据文件加密
4.私钥长度:有512bit,1024bit,2048bit,4096bit,长度越长,越安全
5.密钥管理:加解密过程中不必网络传输保密的密钥;密钥管理优于AES算法;
AES+RSA:
使用AES对称密码体制对传输数据加密,同时使用RSA不对称密码体制来传送AES的密钥,就可以综合发挥AES和RSA的优点同时 避免它们缺点来实现一种新的数据加密方案
流程:
接收方创建RSA秘钥对,
发送RSA公钥给发送方,自己保留RSA私钥
发送方创建AES密钥,加密待传送的明文,之后用RSA公钥加密该密钥,
RSA公钥加密AES的密钥+AES密钥加密明文的密文----通过Internet发给---->接收方
接收方用RSA私钥解密加密的密钥,之后再用解密后的AES密钥解密数据密文,得到明文。
创建RSA加密工具类方法(jsencrypt)
第一步:
## 命令行
npm install jsencrypt
--save
第二步:
在src文件夹中创建jsencrypt.js
第三步:jsencrypt.js
import { JSEncrypt
} from 'jsencrypt'
const publicKey
= 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
'2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
const privateKey
= ''
export function encrypt (txt
) {
const encryptor
= new JSEncrypt()
encryptor
.setPublicKey(publicKey
)
return encryptor
.encrypt(txt
)
}
export function decrypt (txt
) {
const encryptor
= new JSEncrypt()
encryptor
.setPrivateKey(privateKey
)
return encryptor
.decrypt(txt
)
}
使用方法
1.在要使用的地方导入
import {encrypt
} from '../utils/jsencrypt'
如下:
2.函数中使用
methods
: {
rr
: function () {
var userId
= sessionStorage
.getItem('userId')
console
.log('加密前:' + userId
)
let tt
= encrypt(userId
)
console
.log('加密后:' + tt
)
},