js 浏览器下 aes解密
安装 crypto-js
pnpm install crypto-js
代码
import * as CryptoJS from 'crypto-js';
export async function decryptText(text: string): Promise<string> {
// 16进制
const keyHex = "cb69976b953380e5ff637b0bf9af35fdf1a56815c81296b3e5314e506d209a05";
const ivHex = 'a312cc7df85e4d26dc65fb4f3fe82919'
// console.log(`text: ${text}`)
// Convert hex strings to Uint8Array
const keyArray = new Uint8Array(
keyHex.match(/.{1,2}/g).map(byte => parseInt(byte, 16))
);
const ivArray = new Uint8Array(
ivHex.match(/.{1,2}/g).map(byte => parseInt(byte, 16))
);
const encryptedData = hexStringToByteArray(text)
// AES decryption using crypto-js
const decryptedData = CryptoJS.AES.decrypt(
{
ciphertext: CryptoJS.enc.Hex.parse(
Array.from(encryptedData).map(byte => ('0' + (byte & 0xFF).toString(16)).slice(-2)).join('')
)
},
CryptoJS.enc.Hex.parse(
Array.from(keyArray).map(byte => ('0' + byte.toString(16)).slice(-2)).join('')
),
{
iv: CryptoJS.enc.Hex.parse(
Array.from(ivArray).map(byte => ('0' + byte.toString(16)).slice(-2)).join('')
),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
}
);
return decryptedData.toString(CryptoJS.enc.Utf8)
}