-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
46 lines (42 loc) · 1.23 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// aes加密解密
import CryptoJS from 'crypto-js'
export default {
encrypt: (encryptedData = '', AESKEY = '') => {
// 加密
// key 为秘钥
// key 和 iv 可以一致
let key = CryptoJS.enc.Utf8.parse(AESKEY)
let encrypted = CryptoJS.AES.encrypt(JSON.stringify(encryptedData), key, {
iv: key,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
// 转换为字符串 -- 加密后的内容
return encrypted.toString()
},
decrypt: (decryptedData = '', AESKEY = '') => {
// 解密
// key 为秘钥
let key = CryptoJS.enc.Utf8.parse(AESKEY)
// key 和 iv 可以一致
// mode 支持 CBC、CFB、CTR、ECB、OFB, 默认 CBC
// padding 支持 Pkcs7、AnsiX923、Iso10126
// 、NoPadding、ZeroPadding, 默认 Pkcs7, 即 Pkcs5 ]
try {
let decrypted = CryptoJS.AES.decrypt(decryptedData, key, {
iv: key,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
// 转换为 utf8 字符串
decrypted = CryptoJS.enc.Utf8.stringify(decrypted)
try {
return JSON.parse(decrypted)
} catch (error) {
return decrypted
}
} catch (error) {
return ''
}
}
}