在NodeJS中加密和解密数据
NodeJS 提供了内置的crypto库,可用于在NodeJS中对数据进行加密和解密。我们可以使用这个库来加密任何类型的数据。您可以在字符串、缓冲区甚至数据流上执行加密操作。crypto还支持多种加密算法。请查看官方资源以了解更多信息。在本文中,我们将使用最流行的AES( 高级加密标准 )进行加密。
配置 ‘crypto’ 依赖项
- 在您的项目中,检查NodeJS是否已初始化。如果尚未初始化,使用以下命令初始化NodeJS。
>> npm init -y
- 在手动安装节点时,“crypto”库会自动添加。如果没有添加,您可以使用以下命令安装crypto。
>> npm install crypto –save
示例
加密和解密数据
//Checking the crypto module
const crypto = require('crypto');
const algorithm = 'aes-256-cbc'; //Using AES encryption
const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);
//Encrypting text
function encrypt(text) {
let cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(key), iv);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return { iv: iv.toString('hex'), encryptedData: encrypted.toString('hex') };
}
// Decrypting text
function decrypt(text) {
let iv = Buffer.from(text.iv, 'hex');
let encryptedText = Buffer.from(text.encryptedData, 'hex');
let decipher = crypto.createDecipheriv('aes-256-cbc', Buffer.from(key), iv);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
return decrypted.toString();
}
// Text send to encrypt function
var hw = encrypt("Welcome to Tutorials Point...")
console.log(hw)
console.log(decrypt(hw))
输出
C:\Users\mysql-test>> node encrypt.js
{ iv: '61add9b0068d5d85e940ff3bba0a00e6', encryptedData:
'787ff81611b84c9ab2a55aa45e3c1d3e824e3ff583b0cb75c20b8947a4130d16' }
//Encrypted text
Welcome to Tutorials Point... //Decrypted text