Node.js的crypto模块 加密
在Node.js中,可以使用crypto模块来进行加密操作。以下是一个使用crypto模块的AES-256-CBC算法进行加密的例子:
const crypto = require('crypto');
// 加密函数
function encrypt(text, secretKey) {
const iv = crypto.randomBytes(16); // 初始化向量
const cipher = crypto.createCipheriv('aes-256-cbc', crypto.createHash('sha256').update(secretKey).digest(), iv);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return iv.toString('hex') + ':' + encrypted.toString('hex');
}
// 解密函数
function decrypt(text, secretKey) {
let textParts = text.split(':');
let iv = Buffer.from(textParts.shift(), 'hex');
let encryptedText = Buffer.from(textParts.join(':'), 'hex');
let decipher = crypto.createDecipheriv('aes-256-cbc', crypto.createHash('sha256').update(secretKey).digest(), iv);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
return decrypted.toString();
}
// 使用示例
const secretKey = 'your-256-bit-secret-key'; // 256位密钥
const originalText = 'Hello World!';
const encryptedText = encrypt(originalText, secretKey);
console.log('Encrypted Text:', encryptedText);
const decryptedText = decrypt(encryptedText, secretKey);
console.log('Decrypted Text:', decryptedText);
在这个例子中,encrypt
函数使用SHA256哈希值作为密钥,并生成一个随机的初始化向量(IV)。然后,它创建一个Cipher实例,并用密钥和IV对文本进行加密。解密过程中,先将加密文本分割为IV和加密文本,然后使用相同的密钥和IV进行解密。
请确保你的密钥是安全的,并且不要在不安全的环境中暴露。
评论已关闭