/**
|
* 工具类
|
* 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)
|
// }
|