Node.js 中的 crypto.createDecipheriv() 方法

这是来自“加密”模块的编程接口。它将根据函数中传递的给定算法、密钥、iv 和选项创建并返回 Decipher 对象。crypto.createCipheriv()

语法

crypto.createDecipheriv(algorithm, key, iv, [options])

参数

上述参数描述如下 -

  • algorithm  - 它需要用于创建密码的算法的输入。一些可能的值是:aes192、aes256 等。

  • key – 它接受算法和iv使用的原始密钥的输入。可能的值可以是以下类型:字符串、缓冲区、TypedArray 或 DataView。它可以选择是秘密类型的类型对象。

  • iv  – 也称为初始化向量。此参数接受 iv 的输入,这将使密码不确定且唯一。它不需要是秘密。其可能的值类型有:字符串、缓冲区、TypedArray、DataView。如果密码不需要,这可以为空。

  • options  - 这是用于控制流行为的可选参数。在 CCM 或 OCB 模式下使用密码时,这不是可选的(如“aes-256-ccm”)

示例

创建一个具有名称的文件 -createDecipheriv.js并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示 -

node createDecipheriv.js

createDecipheriv.js

// 创建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);

// 使用上述定义的参数创建 Decipher

const decipher = crypto.createDecipheriv(algorithm, key, iv);

let decrypted = '';

// 读取和加密数据

decipher.on('readable', () => {

   let chunk;

   while (null !== (chunk = decipher.read())) {

      decrypted += chunk.toString('utf8');

   }

});

//处理关闭/结束事件

decipher.on('end', () => {

   console.log(decrypted);

});

// 将要解密的加密数据

const encrypted = 'uqeQEkXy5dpJjQv+JDvMHw==';

// 打印解密后的文本

decipher.write(encrypted, 'base64');

decipher.end();

console.log("完全的... !");

输出结果
C:\home\node>> node createDecipheriv.js

完全的... !

nhooo

示例

让我们再看一个例子。

// 创建ECDH的节点演示程序

// 导入加密模块

const crypto = require('crypto');

// 初始化算法

const algorithm = 'aes-256-cbc';

// 定义和初始化密码

const password = '123456789'

// 初始化密钥

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') };

}

//用于解密数据的解密函数

function decrypt(text) {

let iv = Buffer.from(text.iv, 'hex');

let encryptedText =

   Buffer.from(text.encryptedData, 'hex');

// 从算法、密钥和 iv 创建解密

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();

}

// 加密以下数据并打印输出

var output = encrypt("欢迎来到教程点!");

console.log("Encrypted data -- ", output);

//打印解密数据

console.log("Decrypted data -- ", decrypt(output));

输出结果
C:\home\node>> node createDecipheriv.js

Encrypted data -- { iv: '3fb2c84290e04d9bfb099bc65a7ac941',

encryptedData:

'4490777e90c5a78037cb92a99d561ae250562e2636af459b911cfa01c0191e3f' }

Decrypted data -- 欢迎来到教程点!

以上是 Node.js 中的 crypto.createDecipheriv() 方法 的全部内容, 来源链接: utcz.com/z/362128.html

回到顶部