модулькрипто
crypto
Модуль представляет собой fibjs
встроенный модуль алгоритма шифрования. Он обеспечивает симметричное шифрование, асимметричное шифрование, алгоритм дайджеста, криптографический генератор случайных чисел и другие функции. Перед использованием require('crypto')
модуль необходимо загрузить через .
В crypto
модуле доступно множество объектов, таких как:
PKey
: Объект алгоритма асимметричного шифрования.X509Cert
: Объект, используемый для управления сертификатами X.509.Cipher
: Объект, используемый для реализации симметричного шифрования.Digest
: Объект, используемый для реализации алгоритма дайджеста.
Прежде чем использовать алгоритм шифрования, необходимо создать ключевой объект.Например, в следующем AES
примере создается ключевой объект:
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
Затем используйте Cipher
объект для шифрования открытого текста:
1
2
3
4const 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
6const 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
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509CertКонструктор, см.X509Cert
1X509Cert crypto.X509Cert;
X509Crl
X509CrlКонструктор, см.X509Crl
1X509Crl crypto.X509Crl;
X509Req
X509ReqКонструктор, см.X509Req
1X509Req crypto.X509Req;
статическая функция
createHash
Создает объект сводной информации на основе заданного имени алгоритма.
1static Digest crypto.createHash(String algo);
Параметры звонка:
- algo: Строка, задающая алгоритм объекта дайджеста информации.
Результаты возврата:
- Digest, возвращает объект сводки информации
createHmac
Создает объект сводной информации hmac на основе заданного имени алгоритма.
1
2static Digest crypto.createHmac(String algo,
Buffer key);
Параметры звонка:
- algo: Строка, задающая алгоритм объекта дайджеста информации.
- key:Buffer, двоичный ключ подписи
Результаты возврата:
- Digest, возвращает объект сводки информации
loadCert
Загрузите сертификат в формате CRT/PEM/DER, который можно вызывать несколько раз.
1static X509Cert crypto.loadCert(String filename);
Параметры звонка:
- filename: строка, имя файла сертификата.
Результаты возврата:
- X509Cert, возвращает объект, содержащий сертификат
loadCrl
Загрузите сертификат отзыва в формате PEM/DER, который можно вызывать несколько раз.
1static X509Crl crypto.loadCrl(String filename);
Параметры звонка:
- filename: строка, имя файла сертификата отзыва.
Результаты возврата:
- X509Crl, возвращает объект, содержащий отозванный сертификат
loadReq
Загрузите запрос сертификата в формате PEM/DER, который можно вызывать несколько раз.
1static X509Req crypto.loadReq(String filename);
Параметры звонка:
- filename: строка, имя файла запроса сертификата.
Результаты возврата:
- X509Req, возвращает объект, содержащий запрошенный сертификат
loadPKey
Загрузите асимметричный открытый или закрытый ключ в формате CRT/PEM/DER.
1static PKey crypto.loadPKey(String filename);
Параметры звонка:
- filename: строка, имя файла открытого или закрытого ключа.
Результаты возврата:
randomBytes
Генерируйте случайные числа указанного размера с помощью генератора хеджей.
1static Buffer crypto.randomBytes(Integer size = 16) async;
Параметры звонка:
- size: целое число, определяет размер сгенерированного случайного числа.
Результаты возврата:
- Buffer, возвращает сгенерированное случайное число
simpleRandomBytes
Генерируйте случайные числа низкой силы заданного размера, используя быстрый алгоритм.
1static Buffer crypto.simpleRandomBytes(Integer size = 16) async;
Параметры звонка:
- size: целое число, определяет размер сгенерированного случайного числа.
Результаты возврата:
- Buffer, возвращает сгенерированное случайное число
pseudoRandomBytes
Генерируйте псевдослучайные числа заданного размера, используя генератор энтропии.
1static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;
Параметры звонка:
- size: целое число, определяет размер сгенерированного случайного числа.
Результаты возврата:
- Buffer, возвращает сгенерированное случайное число
randomFill
Используйте случайные числа для заполнения указанногоBuffer, используя генератор хеджей
1
2
3static Buffer crypto.randomFill(Buffer buffer,
Integer offset = 0,
Integer size = -1) async;
Параметры звонка:
- buffer:Buffer, укажите сгенерированныйBuffer
- offset: целое число, указывает начальное смещение, значение по умолчанию — 0.
- size: целое число, определяет размер сгенерированного случайного числа, значение по умолчанию — buffer.length — смещение.
Результаты возврата:
- Buffer, возвращает сгенерированное случайное число
randomArt
Генерирует визуальное изображение символа заданных данных.
1
2
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
Параметры звонка:
- data:Buffer, укажите данные для отображения
- title: строка, указывает заголовок изображения символа. Многобайтовые символы могут привести к ошибкам ширины.
- size: целое число, размер изображения символов.
Результаты возврата:
- String, возвращает сгенерированное изображение визуальной строки
generateKey
Создать закрытый ключ RSA
1static PKey crypto.generateKey(Integer size) async;
Параметры звонка:
- size: целое число, указывает длину ключа RSA в битах.
Результаты возврата:
- PKey, возвращает объект, содержащий сгенерированный закрытый ключ
Создайте закрытый ключ эллиптической кривой
1static 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
5static 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
5static 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
5static 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
5static 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».
1static Array crypto.getHashes();
Результаты возврата:
- Array, возвращает поддержку fibjshashмассив алгоритмов
постоянный
AES
Укажите алгоритм симметричного шифрования AES, поддержка 128, 192, 256-битного ключа, режим работы блочного шифрования поддерживает ECB, CBC, CFB128, CTR, GCM, CCM, XTS
1const crypto.AES = 1;
DES
Указывает алгоритм симметричного шифрования DES, поддерживает 64-битный ключ, а режим работы блочного шифрования поддерживает ECB, CBC.
1const crypto.DES = 2;
DES_EDE3
Укажите алгоритм симметричного шифрования DES-EDE3, поддержите 192-битный ключ, рабочий режим блочного шифрования поддерживает ECB, CBC
1const crypto.DES_EDE3 = 3;
CAMELLIA
Укажите алгоритм симметричного шифрования CAMELLIA, поддержка 128, 192, 256-битного ключа, режим работы блочного шифрования поддерживает ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.CAMELLIA = 4;
ARIA
Укажите алгоритм симметричного шифрования ARIA, поддержка 128, 192, 256-битного ключа, режим работы блочного шифрования поддерживает ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.ARIA = 5;
CHACHA20
Укажите алгоритм симметричного шифрования CHACHA20, поддержите 256-битный ключ, а режим работы блочного шифрования поддерживает POLY1305.
1const crypto.CHACHA20 = 6;
SM4
Укажите алгоритм симметричного шифрования SM4, режим работы блочного шифрования поддерживает ECB, CBC.
1const crypto.SM4 = 7;
ECB
Укажите рабочий режим блочного шифрования для поддержки ECB
1const crypto.ECB = 1;
CBC
Укажите рабочий режим блочного шифрования для поддержки CBC
1const crypto.CBC = 2;
CFB64
Укажите режим работы блочного шифрования для поддержки CFB64.
1const crypto.CFB64 = 3;
CFB128
Укажите рабочий режим блочного шифрования для поддержки CFB128.
1const crypto.CFB128 = 4;
OFB
Укажите рабочий режим блочного шифрования для поддержки OFB
1const crypto.OFB = 5;
CTR
Укажите рабочий режим блочного шифрования для поддержки CTR
1const crypto.CTR = 6;
GCM
Укажите режим работы блочного шифрования для поддержки GCM
1const crypto.GCM = 7;
STREAM
Укажите режим потокового шифрования
1const crypto.STREAM = 8;
CCM
Укажите рабочий режим блочного шифрования для поддержки CCM
1const crypto.CCM = 9;
XTS
Укажите рабочий режим блочного шифрования для поддержки XTS
1const crypto.XTS = 10;
POLY1305
Укажите рабочий режим блочного шифрования для поддержки POLY1305.
1const crypto.POLY1305 = 11;
PKCS7
Укажите режим заполнения как PKCS7.
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Укажите режим заполнения как ONE_AND_ZEROS.
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Укажите режим заполнения как ZEROS_AND_LEN.
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Укажите режим заполнения как НУЛИ
1const crypto.ZEROS = 3;
NOPADDING
Укажите режим заполнения NOPADDING.
1const crypto.NOPADDING = 4;