NodeJS加密解密及node-rsa加密解密用法详解
什么是加密解密?
加密解密是指对信息进行加密编码使其不被未经授权的第三方所访问,然后再通过解密还原的过程。
NodeJS加密解密
NodeJS自带了Crypto模块,提供了包含对称加密,散列(哈希),HMAC,RSA等加密算法的支持。下面是一些加密解密实例:
对称加密
对称加密就是密钥加密和密钥解密都使用相同的密钥,加密和解密的速度快,但是密钥不安全,加密数据的安全性有待提高,常用的对称加密算法有AES和DES。
const crypto = require('crypto');
const cipher = crypto.createCipher('aes192', 'password');
let encrypted = '';
cipher.on('readable', () => {
const data = cipher.read();
if (data)
encrypted += data.toString('hex');
});
cipher.on('end', () => {
console.log(encrypted);
// Prints: '6ee6d71230fd69dd8159033b2d486590'
});
cipher.write('some clear text data');
cipher.end();
散列(哈希)
散列操作是将输入字符串压缩,从而经过映射的输出,并且输出长度固定,常用的散列算法有SHA-1和SHA-256。
const crypto = require('crypto');
const hash = crypto.createHash('sha256');
hash.on('readable', () => {
const data = hash.read();
if (data)
console.log(data.toString('hex'));
// Prints:
// 90f25b6ffeba6b699127712529810776b6872156f99b326734bac72cfeddf8d5
});
hash.write('some data to hash');
hash.end();
HMAC
HMAC 是 Keyed-Hashing for Message Authentication的缩写,主要介绍如何对信息进行签名,常用的算法有HMAC-SHA1,HMAC-SHA256等。
const crypto = require('crypto');
const secret = 'abcdefg';
const hmac = crypto.createHmac('sha256', secret);
hmac.on('readable', () => {
const data = hmac.read();
if (data)
console.log(data.toString('hex'));
// Prints:
// 2c2e8deddb7b50c9f4c74d29fea32e5726a4976e436f8f4edff033e889d653aa
});
hmac.write('some data to hash');
hmac.end();
RSA
RSA 是一种非对称加密算法,除了对称加密外,还有一种非对称加密方法,利用了一对密钥(公钥和私钥)来在不安全的信道上进行加密和解密操作。
const NodeRSA = require('node-rsa');
const key = new NodeRSA({b: 512});
const text = 'Hello RSA!';
const encrypted = key.encrypt(text, 'base64');
console.log('encrypted: ', encrypted);
const decrypted = key.decrypt(encrypted, 'utf8');
console.log('decrypted message: ', decrypted);
node-rsa加密解密用法详解
node-rsa是一个第三方库,它提供了RSA算法的支持。下面是node-rsa的加密解密实例。
const NodeRSA = require('node-rsa');
const key = new NodeRSA({b: 512});
const text = 'Hello RSA!';
const encrypted = key.encrypt(text, 'base64');
console.log('encrypted: ', encrypted);
const decrypted = key.decrypt(encrypted, 'utf8');
console.log('decrypted message: ', decrypted);
参考资料:
- Node.js Cryptography
- node-rsa Usage Examples
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NodeJS加密解密及node-rsa加密解密用法详解 - Python技术站