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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。