Метод Node.js cipher.setAAD()

Node.js1 Изучение

Метод cipher.setAAD() используется в Node.js для установки дополнительных аутентифицированных данных (AAD) для потока шифрования/дешифрования. AAD — это фрагмент данных, который прошел проверку подлинности, но не зашифрован. Это полезно для отправки данных вместе с зашифрованным сообщением, которое необходимо аутентифицировать, но не нужно хранить в секрете.

Синтаксис:

cipher.setAAD(aad[, options]);

Параметры: метод cipher.setAAD () принимает два параметра:

  • aad: Buffer или TypedArray, содержащий дополнительные аутентифицированные данные для установки.
  • options: (необязательно): объект, содержащий параметры для настройки AAD. Этот объект может включать свойство plaintextLength, указывающее длину данных открытого текста (в байтах), которые будут зашифрованы.

Пример 1. В приведенном ниже примере метод cipher.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 для входных и выходных данных, но вы можете использовать любой из поддерживаемых вариантов кодировки (например, hex, base64 и т. д.) в зависимости от ваших потребностей.

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

Читайте также:  Настройка Sudo без пароля
Оцените статью
bestprogrammer.ru
Добавить комментарий