From b846fea1c6fe7fdc17a5e08aec1dd296b7463f6c Mon Sep 17 00:00:00 2001 From: "15881625488@163.com" <15881625488@163.com> Date: Fri, 16 Jan 2026 10:26:38 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A[=E8=AF=95=E9=AA=8C=E7=AE=A1?= =?UTF-8?q?=E7=90=86]=E6=96=B0=E5=A2=9E=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/encryptUtil.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/utils/encryptUtil.js diff --git a/src/utils/encryptUtil.js b/src/utils/encryptUtil.js new file mode 100644 index 0000000..9a1d8ce --- /dev/null +++ b/src/utils/encryptUtil.js @@ -0,0 +1,36 @@ +const CRYPTOJSKEY = '7LrjnqHv2mS5Qr5s' +import CryptoJS from 'crypto-js' +export function encrypt(plaintText) { + var plaintText = plaintText + var options = { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + } + var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY) + var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options) + var encryptedBase64Str = encryptedData.toString().replace(/\//g, '_') + encryptedBase64Str = encryptedBase64Str.replace(/\+/g, '-') + return encryptedBase64Str +} +export function decrypt(encryptedText) { + // 还原 URL 安全字符 + let encryptedBase64Str = encryptedText + .replace(/_/g, '/') // 还原 _ + .replace(/-/g, '+') // 还原 - + // 补充末尾的 =(如果需要) + const mod4 = encryptedBase64Str.length % 4 + if (mod4) { + encryptedBase64Str += '='.repeat(4 - mod4) + } + try { + const key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY) + const decrypt = CryptoJS.AES.decrypt(encryptedBase64Str, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return CryptoJS.enc.Utf8.stringify(decrypt).toString() + } catch (e) { + console.error('解密失败:', e) + return null + } +}