Базовый модуль модуля

модулькрипто

cryptoМодуль представляет собой fibjsвстроенный модуль алгоритма шифрования. Он обеспечивает симметричное шифрование, асимметричное шифрование, алгоритм дайджеста, криптографический генератор случайных чисел и другие функции. Перед использованием require('crypto')модуль необходимо загрузить через .

В cryptoмодуле доступно множество объектов, таких как:

  • PKey: Объект алгоритма асимметричного шифрования.
  • X509Cert: Объект, используемый для управления сертификатами X.509.
  • Cipher: Объект, используемый для реализации симметричного шифрования.
  • Digest: Объект, используемый для реализации алгоритма дайджеста.

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

1 2
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key

Затем используйте Cipherобъект для шифрования открытого текста:

1 2 3 4
const c = new crypto.Cipher(crypto.AES, crypto.ECB, key); const data = 'hello, world'; const encrypted = c.encrypt(data).hex(); console.log(encrypted); // output encrypted data

В приведенном выше примере создается AESзашифрованный Cipherобъект , encryptоткрытый текст шифруется с помощью метода и возвращается результат шифрования.

Помимо симметричных алгоритмов шифрования, cryptoмодуль также может поддерживать асимметричные алгоритмы шифрования и алгоритмы дайджеста. Например, следующий пример представляет собой код, который использует PKeyи Digestобъекты для реализации шифрования SHA256:

1 2 3 4 5 6
const privateKey = crypto.loadPKey('private.pem'); // read private key from file const data = 'hello, world'; const digest = new crypto.Digest(hash.SHA256); digest.update(data); const signature = privateKey.sign(digest.digest()); console.log(signature); // output signature

В приведенном выше примере сначала считывается файл закрытого ключа и подготавливаются входные данные. Затем Digestсоздается объект SHA256, и updateданные добавляются к вычислению хеша с использованием этого метода. После завершения расчета используйте privateKey.signметод для подписи и вывода результата подписи.

Подводя итог, cryptoмодуль предоставляет различные алгоритмы шифрования, алгоритмы дайджеста и связанные объекты.Эти функции могут помочь нам достичь различных требований безопасности, таких как симметричное и асимметричное шифрование, цифровые подписи и проверка шифрования.

объект

Cipher

CipherКонструктор, см.Cipher

1
Cipher crypto.Cipher;

PKey

PKeyКонструктор, см.PKey

1
PKey crypto.PKey;

ECKey

ECKeyКонструктор, см.ECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyКонструктор, см.BlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509CertКонструктор, см.X509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509CrlКонструктор, см.X509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509ReqКонструктор, см.X509Req

1
X509Req crypto.X509Req;

статическая функция

createHash

Создает объект сводной информации на основе заданного имени алгоритма.

1
static Digest crypto.createHash(String algo);

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

  • algo: Строка, задающая алгоритм объекта дайджеста информации.

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

  • Digest, возвращает объект сводки информации

createHmac

Создает объект сводной информации hmac на основе заданного имени алгоритма.

1 2
static Digest crypto.createHmac(String algo, Buffer key);

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

  • algo: Строка, задающая алгоритм объекта дайджеста информации.
  • key:Buffer, двоичный ключ подписи

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

  • Digest, возвращает объект сводки информации

loadCert

Загрузите сертификат в формате CRT/PEM/DER, который можно вызывать несколько раз.

1
static X509Cert crypto.loadCert(String filename);

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

  • filename: строка, имя файла сертификата.

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

  • X509Cert, возвращает объект, содержащий сертификат

loadCrl

Загрузите сертификат отзыва в формате PEM/DER, который можно вызывать несколько раз.

1
static X509Crl crypto.loadCrl(String filename);

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

  • filename: строка, имя файла сертификата отзыва.

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

  • X509Crl, возвращает объект, содержащий отозванный сертификат

loadReq

Загрузите запрос сертификата в формате PEM/DER, который можно вызывать несколько раз.

1
static X509Req crypto.loadReq(String filename);

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

  • filename: строка, имя файла запроса сертификата.

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

  • X509Req, возвращает объект, содержащий запрошенный сертификат

loadPKey

Загрузите асимметричный открытый или закрытый ключ в формате CRT/PEM/DER.

1
static PKey crypto.loadPKey(String filename);

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

  • filename: строка, имя файла открытого или закрытого ключа.

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

  • PKey, возврат содержитPKeyОбъект

randomBytes

Генерируйте случайные числа указанного размера с помощью генератора хеджей.

1
static Buffer crypto.randomBytes(Integer size = 16) async;

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

  • size: целое число, определяет размер сгенерированного случайного числа.

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

  • Buffer, возвращает сгенерированное случайное число

simpleRandomBytes

Генерируйте случайные числа низкой силы заданного размера, используя быстрый алгоритм.

1
static Buffer crypto.simpleRandomBytes(Integer size = 16) async;

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

  • size: целое число, определяет размер сгенерированного случайного числа.

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

  • Buffer, возвращает сгенерированное случайное число

pseudoRandomBytes

Генерируйте псевдослучайные числа заданного размера, используя генератор энтропии.

1
static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;

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

  • size: целое число, определяет размер сгенерированного случайного числа.

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

  • Buffer, возвращает сгенерированное случайное число

randomFill

Используйте случайные числа для заполнения указанногоBuffer, используя генератор хеджей

1 2 3
static Buffer crypto.randomFill(Buffer buffer, Integer offset = 0, Integer size = -1) async;

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

  • buffer:Buffer, укажите сгенерированныйBuffer
  • offset: целое число, указывает начальное смещение, значение по умолчанию — 0.
  • size: целое число, определяет размер сгенерированного случайного числа, значение по умолчанию — buffer.length — смещение.

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

  • Buffer, возвращает сгенерированное случайное число

randomArt

Генерирует визуальное изображение символа заданных данных.

1 2 3
static String crypto.randomArt(Buffer data, String title, Integer size = 8);

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

  • data:Buffer, укажите данные для отображения
  • title: строка, указывает заголовок изображения символа. Многобайтовые символы могут привести к ошибкам ширины.
  • size: целое число, размер изображения символов.

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

  • String, возвращает сгенерированное изображение визуальной строки

generateKey

Создать закрытый ключ RSA

1
static PKey crypto.generateKey(Integer size) async;

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

  • size: целое число, указывает длину ключа RSA в битах.

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

  • PKey, возвращает объект, содержащий сгенерированный закрытый ключ

Создайте закрытый ключ эллиптической кривой

1
static PKey crypto.generateKey(String curve = "secp521r1") async;

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

  • curve: строка, определяет предустановленную эллиптическую кривую, значение по умолчанию — «secp256r1».

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

  • PKey, возвращает объект, содержащий сгенерированный закрытый ключ

Кривая Дополнительные кривые включают кривые NIST и их псевдонимы, как показано ниже:

изгиб Псевдоним
НИСТ P-192 «NIST P-192», «p192», «P-192», «prime192v1», «secp192r1»
НИСТ P-224 «NIST P-224», «p224», «P-224», «prime224v1», «secp224r1»
НИСТ P-256 «NIST P-256», «p256», «P-256», «prime256v1», «secp256r1»
НИСТ P-384 «NIST P-384», «p384», «P-384», «prime384v1», «secp384r1»
НИСТ P-521 «NIST P-521», «p521», «P-521», «prime521v1», «secp521r1»

Другие поддерживаемые кривые: «brainpoolP512r1», «brainpoolP384r1», «secp256k1», «P-256K», «brainpoolP256r1», «sm2p256r1», «SM2», «Ed25519», «BLS12381_G1», «BLS12381_G2».


pbkdf1

Сгенерируйте необходимый двоичный ключ на основе текстового пароля на основе pbkdf1.

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

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

  • password:Buffer, укажите пароль для использования
  • salt:Buffer, укажите соль, используемую hmac
  • iterations: целое число, укажите количество итераций
  • size: целое число, укажите размер ключа
  • algo: Целое число, укажитеhashалгоритм см.hashмодуль

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

  • Buffer, возвращает сгенерированный двоичный ключ

Сгенерируйте необходимый двоичный ключ на основе текстового пароля на основе pbkdf1.

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

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

  • password:Buffer, укажите пароль для использования
  • salt:Buffer, укажите соль, используемую hmac
  • iterations: целое число, укажите количество итераций
  • size: целое число, укажите размер ключа
  • algoName: Строка, указываетhashалгоритм см.hashмодуль

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

  • Buffer, возвращает сгенерированный двоичный ключ

pbkdf2

Сгенерируйте необходимый двоичный ключ на основе простого текстового пароля в соответствии с rfc2898.

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

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

  • password:Buffer, укажите пароль для использования
  • salt:Buffer, укажите соль, используемую hmac
  • iterations: целое число, укажите количество итераций
  • size: целое число, укажите размер ключа
  • algo: Целое число, укажитеhashалгоритм см.hashмодуль

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

  • Buffer, возвращает сгенерированный двоичный ключ

Сгенерируйте необходимый двоичный ключ на основе простого текстового пароля в соответствии с rfc2898.

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

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

  • password:Buffer, укажите пароль для использования
  • salt:Buffer, укажите соль, используемую hmac
  • iterations: целое число, укажите количество итераций
  • size: целое число, укажите размер ключа
  • algoName: Строка, указываетhashалгоритм см.hashмодуль

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

  • Buffer, возвращает сгенерированный двоичный ключ

getHashes

Получите поддержку криптомодуляhash(Аннотация) Алгоритмы, такие как «md5», «sha224».

1
static Array crypto.getHashes();

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

  • Array, возвращает поддержку fibjshashмассив алгоритмов

постоянный

AES

Укажите алгоритм симметричного шифрования AES, поддержка 128, 192, 256-битного ключа, режим работы блочного шифрования поддерживает ECB, CBC, CFB128, CTR, GCM, CCM, XTS

1
const crypto.AES = 1;

DES

Указывает алгоритм симметричного шифрования DES, поддерживает 64-битный ключ, а режим работы блочного шифрования поддерживает ECB, CBC.

1
const crypto.DES = 2;

DES_EDE3

Укажите алгоритм симметричного шифрования DES-EDE3, поддержите 192-битный ключ, рабочий режим блочного шифрования поддерживает ECB, CBC

1
const crypto.DES_EDE3 = 3;

CAMELLIA

Укажите алгоритм симметричного шифрования CAMELLIA, поддержка 128, 192, 256-битного ключа, режим работы блочного шифрования поддерживает ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.CAMELLIA = 4;

ARIA

Укажите алгоритм симметричного шифрования ARIA, поддержка 128, 192, 256-битного ключа, режим работы блочного шифрования поддерживает ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.ARIA = 5;

CHACHA20

Укажите алгоритм симметричного шифрования CHACHA20, поддержите 256-битный ключ, а режим работы блочного шифрования поддерживает POLY1305.

1
const crypto.CHACHA20 = 6;

SM4

Укажите алгоритм симметричного шифрования SM4, режим работы блочного шифрования поддерживает ECB, CBC.

1
const crypto.SM4 = 7;

ECB

Укажите рабочий режим блочного шифрования для поддержки ECB

1
const crypto.ECB = 1;

CBC

Укажите рабочий режим блочного шифрования для поддержки CBC

1
const crypto.CBC = 2;

CFB64

Укажите режим работы блочного шифрования для поддержки CFB64.

1
const crypto.CFB64 = 3;

CFB128

Укажите рабочий режим блочного шифрования для поддержки CFB128.

1
const crypto.CFB128 = 4;

OFB

Укажите рабочий режим блочного шифрования для поддержки OFB

1
const crypto.OFB = 5;

CTR

Укажите рабочий режим блочного шифрования для поддержки CTR

1
const crypto.CTR = 6;

GCM

Укажите режим работы блочного шифрования для поддержки GCM

1
const crypto.GCM = 7;

STREAM

Укажите режим потокового шифрования

1
const crypto.STREAM = 8;

CCM

Укажите рабочий режим блочного шифрования для поддержки CCM

1
const crypto.CCM = 9;

XTS

Укажите рабочий режим блочного шифрования для поддержки XTS

1
const crypto.XTS = 10;

POLY1305

Укажите рабочий режим блочного шифрования для поддержки POLY1305.

1
const crypto.POLY1305 = 11;

PKCS7

Укажите режим заполнения как PKCS7.

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

Укажите режим заполнения как ONE_AND_ZEROS.

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

Укажите режим заполнения как ZEROS_AND_LEN.

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

Укажите режим заполнения как НУЛИ

1
const crypto.ZEROS = 3;

NOPADDING

Укажите режим заполнения NOPADDING.

1
const crypto.NOPADDING = 4;