xieb
2023-09-13 3667807a7b7418efc090ee3fa6a6b734bc3080bf
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
 * 工具类
 * AES加密
 * 特别注意:(1)AES加密中需要前后端共同协商一个密文(密钥),用来加密/解密的(2)偏移量。
 * yskj@!#$20230516 代表此次密文
 */
import CryptoJS from 'crypto-js'
// ECB模式
// 加密
export function encrypt (word: any, keyStr?: string) { // word, keyStr第一个参数是加密的字段名字  第二个是key值(16位)
  keyStr = keyStr || 'yskj@!#$20230516' // 密文(密钥)
  const key = CryptoJS.enc.Utf8.parse(keyStr)
  const srcs = CryptoJS.enc.Utf8.parse(word)
  const encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
  return encrypted.toString()
}
// 解密
export function decrypt (word: any, keyStr?: string) {
  keyStr = keyStr || 'yskj@!#$20230516'
  const key = CryptoJS.enc.Utf8.parse(keyStr)// Latin1 w8m31+Yy/Nw6thPsMpO5fg==
  const decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
  return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}
 
// // CBC模式
//   // 特别注意:此次是将密文写死到函数内部,也可以当成函数的参数进行动态绑定密文,列如:
//   export function encrypt (word:any) {
//     const keyStr = 'yskj@!#$20230516' // 密钥
 
//     const ivStr = 'yskj@!#$20230516' // 偏移量
 
//     const key = CryptoJS.enc.Utf8.parse(keyStr)
 
//     const iv = CryptoJS.enc.Utf8.parse(ivStr)
 
//     const srcs = CryptoJS.enc.Utf8.parse(word)
 
//     const encrypted = CryptoJS.AES.encrypt(srcs, key, {
 
//       iv: iv,
 
//       mode: CryptoJS.mode.CBC,
 
//       padding: CryptoJS.pad.Pkcs7
 
//     })
 
//     return encrypted.toString()
//   },
//   // 解密
//   decrypt (word:any) {
//     const keyStr = 'yskj@!#$20230516'
 
//     const ivStr = 'yskj@!#$20230516'
 
//     const base64 = CryptoJS.enc.Utf8.parse(word)
 
//     const key = CryptoJS.enc.Utf8.parse(keyStr)
 
//     const iv = CryptoJS.enc.Utf8.parse(ivStr)
 
//     const src = CryptoJS.enc.Utf8.stringify(base64)
 
//     const decrypt = CryptoJS.AES.decrypt(src, key, {
 
//       iv,
 
//       mode: CryptoJS.mode.CBC,
 
//       padding: CryptoJS.pad.Pkcs7
 
//     })
 
//     return decrypt.toString(CryptoJS.enc.Utf8)
//   }