js aes-256-gcm 加解密
时间: 2024-09-19 19:03:30 浏览: 156
在JavaScript中,可以使用一些库来处理AES-256-GCM(高级加密标准,256位密钥,基于Galois/Counter Mode)的加解密操作,如`crypto-js`、`node-forge`等。这里是一个简单的示例:
```javascript
// 引入必要的库
const crypto = require('crypto-js');
// AES-256-GCM 加密
function encrypt(message, key) {
const iv = crypto.randomWords(12); // 初始化向量
const encrypted = CryptoJS.AES.encrypt(JSON.stringify(message), key, {
mode: CryptoJS.mode.GCM,
iv: iv.toString(CryptoJS.enc.Hex),
padding: CryptoJS.pad.NoPadding,
ivLength: 12, // GCM需要12字节的初始化向量
}).toString();
return { ciphertext: encrypted, iv };
}
// AES-256-GCM 解密
function decrypt(ciphertext, key, iv) {
const parsedCiphertext = Buffer.from(ciphertext, 'hex');
const message = CryptoJS.AES.decrypt(parsedCiphertext, key, {
mode: CryptoJS.mode.GCM,
iv: Buffer.from(iv, 'hex'),
ivLength: 12,
padding: CryptoJS.pad.NoPadding,
});
try {
return JSON.parse(message.toString(CryptoJS.enc.Utf8));
} catch (e) {
console.error('Decryption failed:', e);
return null;
}
}
// 示例
let message = { yourData: 'to be encrypted' };
let secretKey = 'your-secret-key'; // 需要将其转化为Buffer或者CryptoJSlib格式
let encryptedData = encrypt(message, secretKey);
let decryptedMessage = decrypt(encryptedData.ciphertext, secretKey, encryptedData.iv);
console.log('
阅读全文