From 682ee545960e771387ec38b1472e301f1ba96fa5 Mon Sep 17 00:00:00 2001 From: sakuya <81883387@qq.com> Date: Mon, 16 May 2022 15:08:45 +0800 Subject: [PATCH] =?UTF-8?q?UP=20AES=20=E5=8A=A0=E8=A7=A3=E5=AF=86=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8F=90=E7=A4=BA&iv=EF=BC=8Cmode=EF=BC=8Cpadding?= =?UTF-8?q?=E5=8F=AF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/tool.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/utils/tool.js b/src/utils/tool.js index c11ef738..0d2ee746 100644 --- a/src/utils/tool.js +++ b/src/utils/tool.js @@ -137,17 +137,22 @@ tool.crypto = { }, //AES加解密 AES: { - encrypt(data, secretKey){ + encrypt(data, secretKey, config={}){ + if(secretKey.length % 8 != 0){ + console.warn("[SCUI error]: 秘钥长度需为8的倍数,否则解密将会失败。") + } const result = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(secretKey), { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 + iv: CryptoJS.enc.Utf8.parse(config.iv || ""), + mode: CryptoJS.mode[config.mode || "ECB"], + padding: CryptoJS.pad[config.padding || "Pkcs7"] }) return result.toString() }, - decrypt(cipher, secretKey){ + decrypt(cipher, secretKey, config={}){ const result = CryptoJS.AES.decrypt(cipher, CryptoJS.enc.Utf8.parse(secretKey), { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 + iv: CryptoJS.enc.Utf8.parse(config.iv || ""), + mode: CryptoJS.mode[config.mode || "ECB"], + padding: CryptoJS.pad[config.padding || "Pkcs7"] }) return CryptoJS.enc.Utf8.stringify(result); }