nodejs 加密库
nodejs 加密库
在Node.js中,有许多加密库可供选择。以下是一些最常用的库:
-
Crypto: 这是Node.js的核心库,它提供了一种简单的方式来创建流密码和其他加密算法。
-
Crypto-js: 这是一个简单的JavaScript加密库,可以在客户端和服务器端进行加密操作。
-
Node.bcrypt.js: 这是一个线程池库,可以用于散列密码以便存储,并安全地验证用户登录。
-
Node.js-bycrpt: 这是一个用于Node.js的bcrypt库,可以用于密码散列。
-
Node.js-rsa: 这是一个用于Node.js的RSA库,可以用于创建,导入和导出密钥,以及加密和解密数据。
-
Node.js-jws: 这是一个用于Node.js的JSON Web令牌库,可以用于创建和验证JWS对象。
-
Node.js-jwa: 这是一个用于Node.js的JWA库,可以用于实现各种加密算法。
-
Node.js-jsonwebtoken: 这是一个用于Node.js的JSON Web令牌库,可以用于创建,解析和验证JWT。
以下是使用Crypto库进行AES-256-CBC加密的示例代码:
var crypto = require('crypto');
var algorithm = 'aes-256-cbc';
var password = 'password'; // 密钥
var key = crypto.scryptSync(password, 'salt', 32);
var iv = crypto.randomBytes(16); // 初始化向量
var cipher = crypto.createCipheriv(algorithm, key, iv);
var encrypted = cipher.update('some clear text data', 'utf8', 'hex') + cipher.final('hex');
console.log('encrypted:', encrypted);
var decipher = crypto.createDecipheriv(algorithm, key, iv);
var decrypted = decipher.update(encrypted, 'hex', 'utf8') + decipher.final('utf8');
console.log('decrypted:', decrypted);
以上代码首先使用crypto.scryptSync
生成密钥,然后使用随机生成的初始化向量。接着,使用createCipheriv
创建一个cipher对象进行加密,最后将加密后的数据转换为十六进制字符串。解密过程类似。
漫思