Встроенный объект объекта

ObjectCipher

Объект алгоритма симметричного шифрования

Шифрованный объект принадлежитcryptoмодуль, создайте:

1
var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);

Ниже в качестве примера используется AES, чтобы продемонстрировать, как использовать объекты Cipher для шифрования и дешифрования:

Во-первых, нам нужно получить симметрично зашифрованный объект Cipher, например алгоритм шифрования AES:

1 2 3
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);

В приведенном выше коде мы randomBytesсгенерировали 16-байтовое случайное число в качестве ключа AES с помощью этого метода. Затем мы создали объект Cipher алгоритма AES, используя рабочий режим блочного шифрования ECB и используя сгенерированное случайное число в качестве ключа.

Далее мы encryptшифруем открытый текст, используя метод объекта Cipher:

1 2 3
const plaintext = 'Hello, world!'; const encrypted = cipher.encrypt(plaintext); console.log(encrypted); // output encrypted data

В приведенном выше коде мы используем encryptметод для шифрования строки Hello, world!и вывода зашифрованного результата.

Что касается приведенного выше кода, вам необходимо обратить внимание на следующие моменты:

  • Перед выполнением шифрования необходимо создать симметрично зашифрованный объект Cipher и установить такие параметры, как алгоритм шифрования, пароль и режим работы блочного шифрования.
  • После вызова метода шифрования мы можем получить зашифрованные данные, которые обычно представляют собойBufferобъект. Следует отметить, что выходные данные представляют собой двоичные данные, которые необходимо распечатать соответствующим методом, например, с помощью Hexи т. д. для преобразования.

Если мы хотим расшифровать данные, нам также понадобится объект Cipher, который также основан на алгоритме AES и использует тот же ключ и режим работы блочного шифрования:

1 2 3
const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key); const decrypted = decipher.decrypt(encrypted); console.log(decrypted.toString()); // output decrypted data

Здесь мы создаем новый объект Cipher, используем тот же рабочий режим ключа и пароля и используем decryptметод для расшифровки зашифрованных данных. Результатом расшифровки являетсяBufferДля корректного вывода объект необходимо преобразовать в строку.

отношения наследства

Конструктор

Cipher

Конструктор шифрования, используется только для инициализации ARC4.

1 2
new Cipher(Integer provider, Buffer key);

Параметры звонка:

  • provider: целое число, укажите алгоритм шифрования
  • key:Buffer, укажите пароль шифрования и дешифрования

Конструктор шифрования

1 2 3
new Cipher(Integer provider, Integer mode, Buffer key);

Параметры звонка:

  • provider: целое число, укажите алгоритм шифрования
  • mode: целое число, указывает режим работы блочного шифрования.
  • key:Buffer, укажите пароль шифрования и дешифрования

Конструктор шифрования

1 2 3 4
new Cipher(Integer provider, Integer mode, Buffer key, Buffer iv);

Параметры звонка:

  • provider: целое число, укажите алгоритм шифрования
  • mode: целое число, указывает режим работы блочного шифрования.
  • key:Buffer, укажите пароль шифрования и дешифрования
  • iv:Buffer, укажите начальный вектор

свойства члена

name

Строка, возвращает имя текущего алгоритма.

1
readonly String Cipher.name;

keySize

Целое число, возвращает длину пароля текущего алгоритма в битах.

1
readonly Integer Cipher.keySize;

ivSize

Целое число, возвращает начальную длину вектора текущего алгоритма в байтах.

1
readonly Integer Cipher.ivSize;

blockSize

Целое число, возвращает длину блока данных текущего алгоритма в байтах.

1
readonly Integer Cipher.blockSize;

функция-член

paddingMode

Использовать режим заполнения

1
Cipher.paddingMode(Integer mode);

Параметры звонка:

  • mode: целое число, указывает режим заполнения, значение по умолчанию — PADDING_PKCS7.

encrypt

Зашифруйте данные, используя текущий алгоритм шифрования.

1
Buffer Cipher.encrypt(Buffer data) async;

Параметры звонка:

  • data:Buffer, укажите данные для шифрования

Результаты возврата:

  • Buffer, возвращает зашифрованные данные

decrypt

Расшифровать данные, используя текущий алгоритм шифрования.

1
Buffer Cipher.decrypt(Buffer data) async;

Параметры звонка:

  • data:Buffer, укажите данные для расшифровки

Результаты возврата:

  • Buffer, возвращает расшифрованные данные

toString

Возвращает строковое представление объекта. Обычно возвращается «[Native Object]». Объект может быть повторно реализован в соответствии с его собственными характеристиками.

1
String Cipher.toString();

Результаты возврата:

  • String, возвращает строковое представление объекта

toJSON

Возвращает представление объекта в формате JSON, обычно возвращая коллекцию читаемых свойств, определенных объектом.

1
Value Cipher.toJSON(String key = "");

Параметры звонка:

  • key: Строка, не используется.

Результаты возврата:

  • Value, возвращает значение, содержащее сериализуемый JSON