ObjectCipher
Объект алгоритма симметричного шифрования
Шифрованный объект принадлежитcryptoмодуль, создайте:
1var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);
Ниже в качестве примера используется AES, чтобы продемонстрировать, как использовать объекты Cipher для шифрования и дешифрования:
Во-первых, нам нужно получить симметрично зашифрованный объект Cipher, например алгоритм шифрования AES:
1
2
3const 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
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
В приведенном выше коде мы используем encrypt
метод для шифрования строки Hello, world!
и вывода зашифрованного результата.
Что касается приведенного выше кода, вам необходимо обратить внимание на следующие моменты:
- Перед выполнением шифрования необходимо создать симметрично зашифрованный объект Cipher и установить такие параметры, как алгоритм шифрования, пароль и режим работы блочного шифрования.
- После вызова метода шифрования мы можем получить зашифрованные данные, которые обычно представляют собойBufferобъект. Следует отметить, что выходные данные представляют собой двоичные данные, которые необходимо распечатать соответствующим методом, например, с помощью
Hex
и т. д. для преобразования.
Если мы хотим расшифровать данные, нам также понадобится объект Cipher, который также основан на алгоритме AES и использует тот же ключ и режим работы блочного шифрования:
1
2
3const 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
2new Cipher(Integer provider,
Buffer key);
Параметры звонка:
- provider: целое число, укажите алгоритм шифрования
- key:Buffer, укажите пароль шифрования и дешифрования
Конструктор шифрования
1
2
3new Cipher(Integer provider,
Integer mode,
Buffer key);
Параметры звонка:
- provider: целое число, укажите алгоритм шифрования
- mode: целое число, указывает режим работы блочного шифрования.
- key:Buffer, укажите пароль шифрования и дешифрования
Конструктор шифрования
1
2
3
4new Cipher(Integer provider,
Integer mode,
Buffer key,
Buffer iv);
Параметры звонка:
- provider: целое число, укажите алгоритм шифрования
- mode: целое число, указывает режим работы блочного шифрования.
- key:Buffer, укажите пароль шифрования и дешифрования
- iv:Buffer, укажите начальный вектор
свойства члена
name
Строка, возвращает имя текущего алгоритма.
1readonly String Cipher.name;
keySize
Целое число, возвращает длину пароля текущего алгоритма в битах.
1readonly Integer Cipher.keySize;
ivSize
Целое число, возвращает начальную длину вектора текущего алгоритма в байтах.
1readonly Integer Cipher.ivSize;
blockSize
Целое число, возвращает длину блока данных текущего алгоритма в байтах.
1readonly Integer Cipher.blockSize;
функция-член
paddingMode
Использовать режим заполнения
1Cipher.paddingMode(Integer mode);
Параметры звонка:
- mode: целое число, указывает режим заполнения, значение по умолчанию — PADDING_PKCS7.
encrypt
Зашифруйте данные, используя текущий алгоритм шифрования.
1Buffer Cipher.encrypt(Buffer data) async;
Параметры звонка:
- data:Buffer, укажите данные для шифрования
Результаты возврата:
- Buffer, возвращает зашифрованные данные
decrypt
Расшифровать данные, используя текущий алгоритм шифрования.
1Buffer Cipher.decrypt(Buffer data) async;
Параметры звонка:
- data:Buffer, укажите данные для расшифровки
Результаты возврата:
- Buffer, возвращает расшифрованные данные
toString
Возвращает строковое представление объекта. Обычно возвращается «[Native Object]». Объект может быть повторно реализован в соответствии с его собственными характеристиками.
1String Cipher.toString();
Результаты возврата:
- String, возвращает строковое представление объекта
toJSON
Возвращает представление объекта в формате JSON, обычно возвращая коллекцию читаемых свойств, определенных объектом.
1Value Cipher.toJSON(String key = "");
Параметры звонка:
- key: Строка, не используется.
Результаты возврата:
- Value, возвращает значение, содержащее сериализуемый JSON