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
相关用法
- Node.js cipher.setAutoPadding()用法及代码示例
- Node.js cipher.update()用法及代码示例
- Node.js cipher.final()用法及代码示例
- Node.js cipher.getAuthTag()用法及代码示例
- Node.js crypto.createDiffieHellman()用法及代码示例
- Node.js console.clear()用法及代码示例
- Node.js console.time()用法及代码示例
- Node.js console.timeEnd()用法及代码示例
- Node.js console.log()用法及代码示例
- Node.js console.error()用法及代码示例
- Node.js console.warn()用法及代码示例
- Node.js crypto.createSign()用法及代码示例
- Node.js crypto.createVerify()用法及代码示例
- Node.js crypto.getCiphers()用法及代码示例
- Node.js crypto.getHashes()用法及代码示例
- Node.js crypto.getCurves()用法及代码示例
- Node.js crypto.getDiffieHellman()用法及代码示例
- Node.js crypto.pbkdf2()用法及代码示例
- Node.js crypto.createHash()用法及代码示例
- Node.js crypto.createHmac()用法及代码示例
- Node.js crypto.randomBytes()用法及代码示例
- Node.js crypto.publicDecrypt()用法及代码示例
- Node.js crypto.pbkdf2Sync()用法及代码示例
- Node.js crypto.createECDH()用法及代码示例
- Node.js crypto.createDecipheriv()用法及代码示例
注:本文由纯净天空筛选整理自geekmuzammil大神的英文原创作品 Node.js cipher.setAAD() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。