當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js cipher.setAAD()用法及代碼示例


Node.js 中使用 cipher.setAAD() 方法為加密/解密流設置附加身份驗證數據 (AAD)。 AAD 是經過身份驗證但未加密的數據塊。它對於與需要驗證但不需要保密的加密消息一起發送數據非常有用。

句法:

cipher.setAAD(aad[, options]);

Parameters: 密碼.setAAD()方法有兩個參數:

  • aad:緩衝區或TypedArray包含要設置的附加驗證數據。
  • options:(可選):包含用於設置 AAD 的選項的對象。該對象可能包括plaintextLength屬性,它指定將被加密的明文數據的長度(以字節為單位)。

示例 1:在下麵的示例中,密碼.setAAD()方法用於將附加的已驗證數據設置為已驗證但未加密的數據。數據加密後,AAD 將被驗證,但不會包含在加密輸出中。

Javascript


const crypto = require('crypto'); 
const iv = Buffer.alloc(16, 0); 
const key = Buffer.alloc(32, 1); 
const aad = Buffer.from('authenticated but not encrypted data'); 
  
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv); 
cipher.setAAD(aad); 
  
const encrypted = 
    cipher.update('some secret data', 'utf8', 'hex') + cipher.final('hex'); 
console.log(encrypted);

輸出:

02c5112376449247c35e9c3cea4242fd

示例 2:這個例子創建了一個新的密碼對象使用aes-256-gcm算法,並使用以下方法設置一些附加的身份驗證數據(AAD)setAAD()方法。然後它加密一些數據並使用以下方法生成身份驗證標簽getAuthTag()方法。此示例使用utf8輸入和輸出數據的編碼,但您可以使用任何支持的編碼選項(例如十六進製,64位基數等)取決於您的需要。

Javascript


const crypto = require('crypto'); 
  
async function main() { 
    // Generate a random key and iv 
    const key = crypto.randomBytes(32); 
    const iv = crypto.randomBytes(16); 
  
    // Create a new cipher object 
    const cipher = crypto.createCipheriv('aes-256-gcm', key, iv); 
  
    // Set the AAD (additional authenticated data) 
    cipher.setAAD(Buffer.from('some additional data')); 
  
    // Encrypt some data 
    const encrypted = cipher.update 
        ('some data to encrypt', 'utf8', 'hex'); 
    encrypted += cipher.final('hex'); 
  
    // Generate the authentication tag 
    const tag = cipher.getAuthTag(); 
  
    // Create a new decipher object 
    const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv); 
  
    // Set the AAD and authentication tag 
    decipher.setAAD(Buffer.from('some additional data')); 
    decipher.setAuthTag(tag); 
  
    // Decrypt the data 
    const decrypted = decipher.update(encrypted, 'hex', 'utf8'); 
    decrypted += decipher.final('utf8'); 
  
    console.log(decrypted); 
} 
  
main();

輸出:

some data to encrypt

參考: https://nodejs.org/api/crypto.html



相關用法


注:本文由純淨天空篩選整理自geekmuzammil大神的英文原創作品 Node.js cipher.setAAD() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。