Node.js 中的 crypto.createCipheriv() 方法
该方法将首先根据为给定密钥和授权因子(iv)传递的算法创建并返回密码对象。crypto.createCipheriv()
语法
crypto.createCipheriv(algorithm, key, iv, options)
参数
上述参数描述如下-
algorithm -它需要用于创建密码的算法的输入。一些可能的值是:aes192、aes256等。
key –它接受算法和iv使用的原始密钥的输入。可能的值可以是以下类型:字符串、缓冲区、TypedArray或DataView。它可以选择是秘密类型的类型对象。
iv –也称为初始化向量。此参数接受iv的输入,这将使密码不确定且唯一。它不需要是秘密。其可能的值类型有:字符串、缓冲区、TypedArray、DataView。如果密码不需要,这可以为空。
options -这是用于控制流行为的可选参数。在CCM或OCB模式下使用密码时,这不是可选的(如“aes-256-ccm”)
示例
创建一个具有名称的文件-createCipheriv.js并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示-
node createCipheriv.js
创建Cipheriv.js
//创建ECDH的节点演示程序
//导入加密模块
const crypto = require('crypto');
//初始化算法
const algorithm = 'aes-256-cbc';
//初始化密钥
const key = crypto.randomBytes(32);
//初始化iv向量
const iv = crypto.randomBytes(16);
//创建加密数据的函数
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()]);
//返回iv和加密数据
return { iv: iv.toString('hex'),
encryptedData: encrypted.toString('hex') };
}
// Printing public & private curve keys...
var output = encrypt("nhooo");
console.log(output);输出结果C:\home\node>> node createCipheriv.js
{ iv: '3dd899aa441c00d4d8d2ff95abb2e684',
encryptedData: 'b4985053bc1507fc25a4d99823dc8b03' }示例
让我们再看一个例子。
//创建ECDH的节点演示程序
//导入加密模块
const crypto = require('crypto');
//初始化算法
const algorithm = 'aes-192-cbc';
//定义和初始化密码
const password = '123456789'
//初始化密钥
const key = crypto.scryptSync(password, 'nhooo', 24);
//初始化iv向量
const iv = Buffer.alloc(16, 0);
//使用上面定义的参数创建密码
const cipher = crypto.createCipheriv(algorithm, key, iv);
let encrypted = '';
//读取和加密数据
cipher.on('readable', () => {
let chunk;
while (null !== (chunk = cipher.read())) {
encrypted += chunk.toString('base64');
}
});
//处理关闭/结束事件
cipher.on('end', () => {
console.log(encrypted);
});
// Printing public & private curve keys...
cipher.write('nhooo');
cipher.end();
console.log("完全的...!");输出结果C:\home\node>> node createCipheriv.js 完全的...! uqeQEkXy5dpJjQv+JDvMHw==