先说重点,如果要支持ie11,crypto的版本就一定要用我写的
"@types/crypto-js": "^4.0.2",
"crypto-js": "^4.0.0",
① 安装
npm install crypto-js@4.0.0 ----这个一定要用这个版本,或者更低一点,再低的我没有试,反正这个是支持ie的-如果不考虑ie就忽略
npm install --save @types/crypto-js
②创建
import CryptoJS from "crypto-js"
import { CrypotoType } from "@/types/pro/crypoto" // 这个是自己定义的,写的什么 我下面发出来
export default class Crypoto implements CrypotoType {
private key = "dufy20170329java" // 要跟后端约定规则
private keyHex = this.getHexKey()
private getHexKey() {
return CryptoJS.enc.Latin1.parse(this.key)
}
encrypt(msg: string) {
const encrypted = CryptoJS.AES.encrypt(msg, this.keyHex, {
iv: this.keyHex, // 这个参数我之前忘传了,使用CBC的时候一直会报错,所以千万不要忘记哦,如果创建成功,但是控制台一直报错什么undefined的呀,什么[0]啥的,就检查一下 是不是自己使用有问题
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return encrypted.toString()
}
decrypt(msg: string) {
const decrypted = CryptoJS.DES.decrypt(msg, this.keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
return decrypted.toString(CryptoJS.enc.Utf8);
}
}
// 接上面 import { CrypotoType } from "@/types/pro/crypoto"
export interface CrypotoType {
encrypt: Function
decrypt: Function
}
好了 就这样引入啦~
③使用
import Crypoto from "@/lib/js/CryptoJS" // 引入
// 使用
const cry = new Crypoto()
const password = cry.encrypt(this.dataForm.password)
简简单单~ 就这样吧~