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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。