当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js crypto.createCipheriv()用法及代码示例


crypto.createCipheriv()方法是加密模块的内置应用程序编程接口,用于创建具有指定算法, key 和初始化向量(iv)的Cipher对象。

用法:

crypto.createCipheriv( algorithm, key, iv, options )

参数:此方法接受上述和以下所述的四个参数:



  • algorithm:它是一个字符串类型值,取决于OpenSSL。示例是aes192,aes256等。
  • key:这是算法和iv使用的原始 key 。它包含字符串,Buffer,TypedArray或DataView。 key 可以是可选的secret类型的KeyObject。
  • iv:它是一个初始化向量,必须是不确定的并且非常独特。但是,理想的iv在密码上是随机的。不必保密。它可以保存字符串,Buffer,TypedArray或DataView类型的数据。如果密码不需要iv,则可以为null。
  • options:它是一个可选参数,用于控制流的行为。除非在CCM或OCB模式下使用密码(例如“ aes-128-ccm”),否则它是可选的。在这种情况下,需要authTagLength选项,该选项定义了身份验证标签的长度(字节),而在GCM模式下,不需要authTagLength选项,但可以使用它来设置身份验证标签的长度,该长度将由getAuthTag()方法,默认值为16个字节。

返回值:它返回密码对象。

以下示例说明了Node.js中crypto.createCipheriv()方法的使用:

范例1:

// Node.js program to demonstrate the      
// crypto.createCipheriv() method 
  
// Includes crypto module 
const crypto = require('crypto'); 
  
// Difining algorithm 
const algorithm = 'aes-256-cbc'; 
  
// Defining key 
const key = crypto.randomBytes(32); 
  
// Defining iv 
const iv = crypto.randomBytes(16); 
  
// An encrypt function 
function encrypt(text) { 
  
 // Creating Cipheriv with its parameter 
 let cipher = crypto.createCipheriv( 
      'aes-256-cbc', Buffer.from(key), iv); 
  
 // Updating text 
 let encrypted = cipher.update(text); 
  
 // Using concatenation 
 encrypted = Buffer.concat([encrypted, cipher.final()]); 
  
 // Returning iv and encrypted data 
 return { iv:iv.toString('hex'),  
    encryptedData:encrypted.toString('hex') }; 
} 
  
// Displays output 
var output = encrypt("GeeksforGeeks"); 
console.log(output);

输出:

{ iv:'fb1f4b0a7daaada6cae678df32fad0f0',
  encryptedData:'41aad2618892aa3d1850d336ad15b50e' }

范例2:

// Node.js program to demonstrate the      
// crypto.createCipheriv() method 
  
// Includes crypto module 
const crypto = require('crypto'); 
  
// Defining algorithm 
const algorithm = 'aes-192-cbc'; 
  
// Defining password 
const password = 'bncaskdbvasbvlaslslasfhj'; 
  
// Defining key 
const key = crypto.scryptSync(password, 'GfG', 24); 
  
// Defininf iv 
const iv = Buffer.alloc(16, 0);  
  
// Creating cipher 
const cipher = crypto.createCipheriv(algorithm, key, iv); 
  
// Declaring encrypted 
let encrypted = ''; 
  
// Reading data 
cipher.on('readable', () => { 
  let chunk; 
  while (null !== (chunk = cipher.read())) { 
    encrypted += chunk.toString('base64'); 
  } 
}); 
  
// Handling end event 
cipher.on('end', () => { 
console.log(encrypted); 
}); 
  
// Writing data 
cipher.write('CS-Portal'); 
cipher.end(); 
console.log("done");

输出:

done
MfHwhG/WPv+TIbG/qM78qA==

参考: https://nodejs.org/api/crypto.html#crypto_crypto_createcipheriv_algorithm_key_iv_options




相关用法


注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 Node.js | crypto.createCipheriv() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。