AES 公钥加密 & Base64转码 加密解密
import CryptoJS from 'crypto-js';
function toString(words) {
return CryptoJS.enc.Utf8.stringify(words);
}
function toBase64String(words) {
return CryptoJS.enc.Base64.stringify(words);
}
/** AES 公钥加密 & Base64转码 */
export function aesEncrypt(input, key) {
const secretKey = CryptoJS.enc.Utf8.parse(key); // 16位
const iv = CryptoJS.enc.Utf8.parse(key);
const body = CryptoJS.AES.encrypt(input, secretKey, {
iv,
padding: CryptoJS.pad.Pkcs7,
mode: CryptoJS.mode.ECB // 指定加密模式为 ECB
});
// encode in base64
return toBase64String(body.ciphertext);
}
以下是对应的解密函数,用于解密使用 AES 公钥加密并进行 Base64 编码的数据:
```javascript
import CryptoJS from 'crypto-js';
/** AES 公钥解密 & Base64解码 */
export function aesDecrypt(input, key) {
const secretKey = CryptoJS.enc.Utf8.parse(key); // 16位
const iv = CryptoJS.enc.Utf8.parse(key);
// decode from base64
const ciphertext = fromBase64String(input);
const decrypted = CryptoJS.AES.decrypt(
{
ciphertext: ciphertext
},
secretKey,
{
iv: iv,
padding: CryptoJS.pad.Pkcs7,
mode: CryptoJS.mode.ECB
}
);
return decrypted.toString(CryptoJS.enc.Utf8);
}
解密函数 aesDecrypt
需要传入两个参数:加密后的输入数据和密钥 key
。函数内部先将密钥解析为 CryptoJS
可识别的格式。然后,使用 fromBase64String
函数将输入数据进行 Base64 解码。接下来,使用 CryptoJS.AES.decrypt
方法解密数据,其中传入了解密所需的参数,包括密文、密钥、初始向量(使用同样的密钥)以及填充和加密模式。最后,使用 toString
方法将解密后的结果从 CryptoJS.enc.Utf8
格式转换为可读文本。
请确保在使用解密函数时正确引入 CryptoJS
库,并根据需要传入加密后的数据和密钥进行解密操作。