vue——RSA加密封装成工具类(jsencrypt)

使用较多的有两种辅助插件
1
2
方法一: jsencrypt.js(RSA)
方法二:crypto.js (AES)

jsencrypt封装工具类方法

AES
1
2
3
4
5
1.对称加密:即加密和解密使用同一个密钥。
2.加密速度快
3.适合数据比较长时的使用
4.密钥长度:密钥最长只有256个bit
5.密钥管理:要求在通信前对密钥进行秘密分配,解密的私钥必须通过网络传送至加密数据接收方;
RSA
1
2
3
4
5
1.非对称加密:即有两个密钥,加密用公钥,解密用私钥(其中公钥可以公开)
2.加密速度慢
3.不适合大量数据文件加密
4.私钥长度:有512bit,1024bit,2048bit,4096bit,长度越长,越安全
5.密钥管理:加解密过程中不必网络传输保密的密钥;密钥管理优于AES算法;

AES+RSA:

使用AES对称密码体制对传输数据加密,同时使用RSA不对称密码体制来传送AES的密钥,就可以综合发挥AES和RSA的优点同时
避免它们缺点来实现一种新的数据加密方案

1
2
3
4
5
6
流程:
接收方创建RSA秘钥对,
发送RSA公钥给发送方,自己保留RSA私钥
发送方创建AES密钥,加密待传送的明文,之后用RSA公钥加密该密钥,
RSA公钥加密AES的密钥+AES密钥加密明文的密文----通过Internet发给---->接收方
接收方用RSA私钥解密加密的密钥,之后再用解密后的AES密钥解密数据密文,得到明文。

创建RSA加密工具类方法(jsencrypt)

第一步:
1
2
## 命令行
npm install jsencrypt --save
第二步:

在src文件夹中创建jsencrypt.js
在这里插入图片描述

第三步:jsencrypt.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*****
 * RSA加密解密工具类
 * **/
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.在要使用的地方导入
1
  import {encrypt} from '../utils/jsencrypt'
如下:

在这里插入图片描述

2.函数中使用
1
2
3
4
5
6
7
methods: {
      rr: function () {
        var userId = sessionStorage.getItem('userId')
        console.log('加密前:' + userId)
        let tt = encrypt(userId)
        console.log('加密后:' + tt)
      },

在这里插入图片描述