Merge branch 'main' into multi-tenant

This commit is contained in:
2024-08-19 10:20:57 +08:00
17 changed files with 219 additions and 27 deletions

View File

@@ -0,0 +1,50 @@
import CryptoJS from 'crypto-js';
import { isValid, decode } from 'js-base64';
/**
* AES 加密并转为 base64
* @param plaintext 数据字符串
* @param aeskey 密钥
* @returns 加密字符串
*/
export function encryptAES(plaintext: string, aeskey: string): string {
const nowRoaund = new Date().getTime().toString(6);
const key = CryptoJS.enc.Utf8.parse(aeskey);
const iv = CryptoJS.enc.Utf8.parse(nowRoaund);
const encrypted = CryptoJS.AES.encrypt(`${nowRoaund}${plaintext}`, key, {
iv: iv,
blockSize: 16,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
format: CryptoJS.format.OpenSSL,
});
return encrypted.toString();
}
/**
* AES 解密
* @param ciphertext 加密字符串
* @param aeskey 密钥
* @returns 数据字符串
*/
export function decryptAES(ciphertext: string, aeskey: string): string {
const nowRoaund = new Date().getTime().toString(6);
const key = CryptoJS.enc.Utf8.parse(aeskey);
const iv = CryptoJS.enc.Utf8.parse(nowRoaund);
const decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
blockSize: 16,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
format: CryptoJS.format.OpenSSL,
});
const base64Str = decrypted.toString(CryptoJS.enc.Base64);
if (isValid(base64Str)) {
const str = decode(base64Str);
const idx = str.indexOf(':)', 10);
if (idx > 10) {
return str.substring(idx + 2);
}
}
return '';
}