12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import CryptoES from "crypto-es";
- export class EncryptUtil {
- private static _key: string = "";
- private static _iv: CryptoES.lib.WordArray = null;
- // 初始化加密库
- static initCrypto(key: string, iv: string) {
- this._key = key;
- this._iv = CryptoES.enc.Hex.parse(iv);
- }
- // MD5加密
- static md5(msg: string) {
- return CryptoES.MD5(msg).toString();
- }
- // AES加密
- static aesEncrypt(msg: string, key?: string, iv?: string): string {
- const keyUtf8 = CryptoES.enc.Utf8.parse(key);
- const ivUtf8 = CryptoES.enc.Utf8.parse(iv);
- const encryptedData = CryptoES.AES.encrypt(msg, keyUtf8, {
- iv: ivUtf8,
- mode: CryptoES.mode.CBC,
- padding: CryptoES.pad.Pkcs7,
- });
- return encryptedData.toString();
- }
- // AES解密
- static aesDecrypt(str: string, key?: string, iv?: string): string {
- const decrypted = CryptoES.AES.decrypt(
- str,
- this._key,
- {
- iv: this._iv,
- format: this.JsonFormatter
- },
- );
- return decrypted.toString(CryptoES.enc.Utf8);
- }
- private static JsonFormatter = {
- stringify: function (cipherParams: any) {
- const jsonObj: any = { ct: cipherParams.ciphertext.toString(CryptoES.enc.Base64) };
- if (cipherParams.iv) {
- jsonObj.iv = cipherParams.iv.toString();
- }
- if (cipherParams.salt) {
- jsonObj.s = cipherParams.salt.toString();
- }
- return JSON.stringify(jsonObj);
- },
- parse: function (jsonStr: any) {
- const jsonObj = JSON.parse(jsonStr);
- const cipherParams = CryptoES.lib.CipherParams.create(
- { ciphertext: CryptoES.enc.Base64.parse(jsonObj.ct) },
- );
- if (jsonObj.iv) {
- cipherParams.iv = CryptoES.enc.Hex.parse(jsonObj.iv)
- }
- if (jsonObj.s) {
- cipherParams.salt = CryptoES.enc.Hex.parse(jsonObj.s)
- }
- return cipherParams;
- },
- };
- }
|