July 27, 2021

Поддерживается более 160k + ресурсов.

20 min read

Поддерживается более 160k + ресурсов.

Надежно храните свои любимые криптовалюты на своих устройствах Android и Apple с помощью Trust Wallet. При среднем обзоре пользователей 4,7 / 5,0 вы можете быть уверены, что ваши цифровые активы конфиденциальны и безопасны..

Тысячи поддерживаемых монет.

Наше приложение для кошелька с несколькими монетами поддерживает основные цепочки блоков в экосистеме Ethereum и работает с любыми токенами ERC20, BEP2 и ERC721, а также обеспечивает покрытие в качестве кошелька Биткойн. Мы также недавно добавили поддержку Binance Smart Chain. Команда разработчиков Trust Wallet продолжает добавлять поддержку для большего количества криптовалют каждый месяц, поэтому обязательно проверяйте наличие обновлений. Или еще лучше, обратитесь к нашей команде, чтобы поделиться поддержкой ваших любимых монет и добавить их в Trust Wallet.!

Документация по Node.js v16.2.0.

Модуль шифрования предоставляет криптографические функции, которые включают набор оболочек для функций хэша OpenSSL, HMAC, шифрования, дешифрования, подписи и проверки..

Определение отсутствия поддержки криптографии #

Node.js может быть собран без поддержки криптографического модуля. В таких случаях попытка импорта из криптографии или вызов require (‘crypto’) приведет к выдаче ошибки..

При использовании CommonJS возникшую ошибку можно отловить с помощью try / catch:

При использовании лексического ключевого слова импорта ESM ошибка может быть обнаружена только в том случае, если обработчик для process.on (‘uncaughtException’) зарегистрирован до того, как будет предпринята любая попытка загрузить модуль – например, с использованием модуля предварительной загрузки.

При использовании ESM, если есть вероятность, что код может быть запущен на сборке Node.js, где поддержка шифрования не включена, рассмотрите возможность использования функции import () вместо лексического ключевого слова import:

Класс: Сертификат №

SPKAC – это механизм запроса на подпись сертификата, изначально реализованный Netscape и формально указанный как часть элемента keygen HTML5..

& # x3C; keygen> устарел, так как HTML 5.2, и новые проекты больше не должны использовать этот элемент.

Модуль шифрования предоставляет класс сертификата для работы с данными SPKAC. Чаще всего используется обработка вывода, созданного элементом HTML5 & # x3C; keygen>. Node.js использует внутреннюю реализацию OpenSSL SPKAC..

Статический метод: Certificate.exportChallenge (spkac [, кодировка]) #

Аргументом spkac может быть ArrayBuffer. Ограничен размер аргумента spkac до 2 ** 31 – 1 байт.

spkac & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки spkac. Возвращает: & # x3C; Buffer> Компонент запроса структуры данных spkac, который включает открытый ключ и запрос..

Статический метод: Certificate.exportPublicKey (spkac [, кодировка]) #

Аргументом spkac может быть ArrayBuffer. Ограничен размер аргумента spkac до 2 ** 31 – 1 байт.

spkac & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки spkac. Возвращает: & # x3C; Buffer> Компонент открытого ключа структуры данных spkac, который включает открытый ключ и запрос..

Статический метод: Certificate.verifySpkac (spkac [, кодировка]) #

Аргументом spkac может быть ArrayBuffer. Добавлена ​​кодировка. Ограничен размер аргумента spkac до 2 ** 31 – 1 байт.

spkac & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки spkac. Возвращает: & # x3C; boolean> true, если данная структура данных spkac действительна, иначе false..

Устаревший API #

В качестве унаследованного интерфейса можно создавать новые экземпляры класса crypto.Certificate, как показано в примерах ниже..

новый crypto.Certificate () #

Экземпляры класса Certificate можно создать с помощью ключевого слова new или путем вызова функции crypto.Certificate ():

certificate.exportChallenge (spkac [, кодировка]) #

spkac & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки spkac. Возвращает: & # x3C; Buffer> Компонент запроса структуры данных spkac, который включает открытый ключ и запрос..

certificate.exportPublicKey (spkac [, кодировка]) #

spkac & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки spkac. Возвращает: & # x3C; Buffer> Компонент открытого ключа структуры данных spkac, который включает открытый ключ и запрос..

certificate.verifySpkac (spkac [, кодировка]) #

spkac & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки spkac. Возвращает: & # x3C; boolean> true, если данная структура данных spkac действительна, иначе false..

Класс: Cipher #

Расширяет: & # x3C; stream.Transform>

Экземпляры класса Cipher используются для шифрования данных. Класс можно использовать одним из двух способов:

Как поток, который доступен как для чтения, так и для записи, где простые незашифрованные данные записываются для создания зашифрованных данных на читаемой стороне или с использованием методов cipher.update () и cipher.final () для создания зашифрованных данных.

Методы crypto.createCipher () или crypto.createCipheriv () используются для создания экземпляров Cipher. Объекты шифрования не должны создаваться напрямую с использованием ключевого слова new..

Пример: использование объектов Cipher в качестве потоков:

Пример: использование Cipher и конвейерных потоков:

cipher.final ([outputEncoding]) #

outputEncoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; string> Любое оставшееся зашифрованное содержимое. Если указано outputEncoding, возвращается строка. Если outputEncoding не указан, возвращается буфер.

После вызова метода cipher.final () объект Cipher больше нельзя использовать для шифрования данных. Попытки вызвать cipher.final () более одного раза приведут к выдаче ошибки.

cipher.getAuthTag () #

Возвращает: & # x3C; Buffer> При использовании режима аутентифицированного шифрования (в настоящее время поддерживаются GCM, CCM и OCB) метод cipher.getAuthTag () возвращает буфер, содержащий тег аутентификации, вычисленный на основе заданных данных..

Метод cipher.getAuthTag () следует вызывать только после завершения шифрования с помощью метода cipher.final ()..

cipher.setAAD (буфер [, параметры]) #

буфер & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> options & # x3C; Object> stream.transform options plaintextLength & # x3C; number> encoding & # x3C; string> Кодировка строки, используемая, когда буфер является строкой.

При использовании режима аутентифицированного шифрования (в настоящее время поддерживаются GCM, CCM и OCB) метод cipher.setAAD () устанавливает значение, используемое для входного параметра дополнительных аутентифицированных данных (AAD)..

Параметр plaintextLength не является обязательным для GCM и OCB. При использовании CCM необходимо указать параметр plaintextLength, и его значение должно соответствовать длине открытого текста в байтах. См. Режим CCM.

Метод cipher.setAAD () должен вызываться перед cipher.update () .

cipher.setAutoPadding ([autoPadding]) #

autoPadding & # x3C; boolean> По умолчанию: true Возвращает: & # x3C; Cipher> для связывания методов.

При использовании алгоритмов блочного шифрования класс Cipher автоматически добавляет заполнение к входным данным до соответствующего размера блока. Чтобы отключить заполнение по умолчанию, вызовите cipher.setAutoPadding (false) .

Когда autoPadding имеет значение false, длина всех входных данных должна быть кратной размеру блока шифра, иначе cipher.final () выдаст ошибку. Отключение автоматического заполнения полезно для нестандартного заполнения, например, с использованием 0x0 вместо заполнения PKCS..

Метод cipher.setAutoPadding () должен вызываться перед cipher.final () .

cipher.update (data [, inputEncoding] [, outputEncoding]) #

По умолчанию inputEncoding изменен с двоичного на utf8. .

data & # x3C; string> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка данных. outputEncoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Обновляет шифр данными. Если указан аргумент inputEncoding, аргумент данных представляет собой строку, использующую указанную кодировку. Если аргумент inputEncoding не указан, данные должны быть Buffer, TypedArray или DataView. Если данные представляют собой буфер, TypedArray или DataView, inputEncoding игнорируется..

OutputEncoding определяет выходной формат зашифрованных данных. Если указано outputEncoding, возвращается строка, использующая указанную кодировку. Если outputEncoding не указан, возвращается буфер.

Метод cipher.update () можно вызывать несколько раз с новыми данными, пока не будет вызван cipher.final (). Вызов cipher.update () после cipher.final () приведет к выдаче ошибки.

Класс: Decipher #

Расширяет: & # x3C; stream.Transform>

Экземпляры класса Decipher используются для расшифровки данных. Класс можно использовать одним из двух способов:

Как поток, который доступен как для чтения, так и для записи, где простые зашифрованные данные записываются для получения незашифрованных данных на читаемой стороне или с использованием методов decipher.update () и decipher.final () для создания незашифрованных данных.

Методы crypto.createDecipher () или crypto.createDecipheriv () используются для создания экземпляров Decipher. Объекты дешифрования не должны создаваться напрямую с использованием ключевого слова new..

Пример: использование объектов Decipher в качестве потоков:

Пример: использование Decipher и конвейерных потоков:

decipher.final ([outputEncoding]) #

outputEncoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; string> Любое оставшееся расшифрованное содержимое. Если указано outputEncoding, возвращается строка. Если outputEncoding не указан, возвращается буфер.

После вызова метода decipher.final () объект Decipher больше не может использоваться для дешифрования данных. Попытки вызвать decipher.final () более одного раза приведут к выдаче ошибки.

decipher.setAAD (буфер [, параметры]) #

Аргумент буфера может быть строкой или ArrayBuffer и ограничен не более чем 2 ** 31-1 байтом..

Этот метод теперь возвращает ссылку на расшифровку .

буфер & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> options & # x3C; Object> stream.transform options plaintextLength & # x3C; number> encoding & # x3C; string> Кодировка строки для использования, когда буфер является строкой.

При использовании режима аутентифицированного шифрования (в настоящее время поддерживаются GCM, CCM и OCB) метод decipher.setAAD () устанавливает значение, используемое для входного параметра дополнительных аутентифицированных данных (AAD)..

Аргумент options не является обязательным для GCM. При использовании CCM необходимо указать параметр plaintextLength, и его значение должно соответствовать длине зашифрованного текста в байтах. См. Режим CCM.

Метод decipher.setAAD () должен вызываться перед decipher.update (). .

При передаче строки в качестве буфера учитывайте предостережения при использовании строк в качестве входных данных для криптографических API..

decipher.setAuthTag (буфер [, кодировка]) #

Аргумент буфера может быть строкой или ArrayBuffer и ограничен не более чем 2 ** 31-1 байтом..

Этот метод теперь срабатывает, если длина тега GCM недействительна..

Этот метод теперь возвращает ссылку на расшифровку .

буфер & # x3C; строка> | & # x3C; Буфер> | & # x3C; ArrayBuffer> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Строковая кодировка, используемая, когда буфер является строкой. Возвращает: & # x3C; Decipher> для связывания методов.

При использовании режима аутентифицированного шифрования (в настоящее время поддерживаются GCM, CCM и OCB) для передачи полученного тега аутентификации используется метод decipher.setAuthTag (). Если тег не указан или зашифрованный текст был изменен, decipher.final () выдаст ошибку, указывая, что зашифрованный текст следует отбросить из-за неудачной аутентификации. Если длина тега недопустима в соответствии с NIST SP 800-38D или не соответствует значению параметра authTagLength, decipher.setAuthTag () выдаст ошибку..

Метод decipher.setAuthTag () должен вызываться перед decipher.update () для режима CCM или перед decipher.final () для режимов GCM и OCB. decipher.setAuthTag () можно вызвать только один раз.

При передаче строки в качестве тега аутентификации следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

decipher.setAutoPadding ([autoPadding]) #

autoPadding & # x3C; boolean> По умолчанию: true Возвращает: & # x3C; Decipher> для связывания методов.

Когда данные были зашифрованы без стандартного заполнения блока, вызов decipher.setAutoPadding (false) отключит автоматическое заполнение, чтобы decipher.final () не проверял и не удалял заполнение..

Отключение автоматического заполнения будет работать только в том случае, если длина входных данных кратна размеру блока шифров..

Метод decipher.setAutoPadding () должен вызываться перед decipher.final () .

decipher.update (data [, inputEncoding] [, outputEncoding]) #

По умолчанию inputEncoding изменен с двоичного на utf8. .

data & # x3C; string> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки данных. outputEncoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Обновляет дешифратор данными. Если указан аргумент inputEncoding, аргумент данных представляет собой строку, использующую указанную кодировку. Если аргумент inputEncoding не указан, данные должны быть буфером. Если данные являются буфером, inputEncoding игнорируется..

OutputEncoding определяет выходной формат зашифрованных данных. Если указано outputEncoding, возвращается строка, использующая указанную кодировку. Если outputEncoding не указан, возвращается буфер.

Метод decipher.update () может вызываться несколько раз с новыми данными, пока не будет вызван decipher.final (). Вызов decipher.update () после decipher.final () приведет к выдаче ошибки.

Класс: DiffieHellman #

Класс DiffieHellman – это утилита для создания обменов ключами Диффи-Хеллмана..

Экземпляры класса DiffieHellman могут быть созданы с помощью функции crypto.createDiffieHellman ().

diffieHellman.computeSecret (otherPublicKey [, inputEncoding] [, outputEncoding]) #

otherPublicKey & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки otherPublicKey. outputEncoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Вычисляет общий секрет, используя otherPublicKey в качестве открытого ключа другой стороны, и возвращает вычисленный общий секрет. Предоставленный ключ интерпретируется с использованием указанного inputEncoding, а секрет кодируется с использованием указанного outputEncoding. Если inputEncoding не указан, ожидается, что otherPublicKey будет Buffer, TypedArray или DataView. .

Если задано outputEncoding, возвращается строка; в противном случае возвращается буфер.

diffieHellman.generateKeys ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Создает закрытые и общедоступные значения ключей Диффи-Хеллмана и возвращает открытый ключ в указанной кодировке. Этот ключ следует передать другой стороне. Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

diffieHellman.getGenerator ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Возвращает генератор Диффи-Хеллмана в указанной кодировке. Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

diffieHellman.getPrime ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Возвращает простое число Диффи-Хеллмана в указанной кодировке. Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

diffieHellman.getPrivateKey ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Возвращает закрытый ключ Диффи-Хеллмана в указанной кодировке. Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

diffieHellman.getPublicKey ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Возвращает открытый ключ Диффи-Хеллмана в указанной кодировке. Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

diffieHellman.setPrivateKey (privateKey [, кодировка]) #

privateKey & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки privateKey.

Устанавливает закрытый ключ Диффи-Хеллмана. Если указан аргумент кодировки, ожидается, что privateKey будет строкой. Если кодировка не указана, предполагается, что privateKey будет Buffer, TypedArray или DataView. .

diffieHellman.setPublicKey (publicKey [, кодировка]) #

publicKey & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки publicKey.

Устанавливает открытый ключ Диффи-Хеллмана. Если указан аргумент кодировки, ожидается, что publicKey будет строкой. Если кодировка не указана, ожидается, что publicKey будет Buffer, TypedArray или DataView. .

diffieHellman.verifyError #

Битовое поле, содержащее любые предупреждения и / или ошибки, возникшие в результате проверки, выполненной во время инициализации объекта DiffieHellman..

Следующие значения допустимы для этого свойства (как определено в модуле констант):

DH_CHECK_P_NOT_SAFE_PRIME DH_CHECK_P_NOT_PRIME DH_UNABLE_TO_CHECK_GENERATOR DH_NOT_SUITABLE_GENERATOR.

Класс: DiffieHellmanGroup #

Класс DiffieHellmanGroup принимает в качестве аргумента хорошо известную группу modp. Он работает так же, как DiffieHellman, за исключением того, что не позволяет изменять свои ключи после создания. Другими словами, он не реализует методы setPublicKey () или setPrivateKey ()..

Название (например, ‘modp1’) взято из RFC 2412 (modp1 и 2) и RFC 3526:

Класс: ECDH #

Класс ECDH – это утилита для создания обменов ключами Elliptic Curve Diffie-Hellman (ECDH)..

Экземпляры класса ECDH могут быть созданы с помощью функции crypto.createECDH ().

Статический метод: ECDH.convertKey (key, curve [, inputEncoding [, outputEncoding [, format]]]) #

ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> curve & # x3C; string> inputEncoding & # x3C; string> Кодировка ключевой строки. outputEncoding & # x3C; string> Кодировка возвращаемого значения. формат & # x3C; строка> По умолчанию: ‘несжатый’ Возвращает: & # x3C; Buffer> | & # x3C; строка>

Преобразует открытый ключ EC Диффи-Хеллмана, заданный ключом и кривой, в формат, заданный параметром format. Аргумент формата определяет точечную кодировку и может быть «сжатым», «несжатым» или «гибридным». Предоставленный ключ интерпретируется с использованием указанного inputEncoding, а возвращаемый ключ кодируется с использованием указанного outputEncoding .

Используйте crypto.getCurves (), чтобы получить список доступных имен кривых. В последних выпусках OpenSSL openssl ecparam -list_curves также будет отображать имя и описание каждой доступной эллиптической кривой..

Если формат не указан, точка будет возвращена в «несжатом» формате..

Если inputEncoding не указан, ожидается, что ключ будет Buffer, TypedArray или DataView. .

Пример (распаковка ключа):

ecdh.computeSecret (otherPublicKey [, inputEncoding] [, outputEncoding]) #

Изменен формат ошибки, чтобы лучше поддерживать ошибку неверного открытого ключа.

По умолчанию inputEncoding изменен с двоичного на utf8. .

Добавлено в v0.11.14.

otherPublicKey & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки otherPublicKey. outputEncoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Вычисляет общий секрет, используя otherPublicKey в качестве открытого ключа другой стороны, и возвращает вычисленный общий секрет. Предоставленный ключ интерпретируется с использованием указанного inputEncoding, а возвращаемый секрет кодируется с использованием указанного outputEncoding. Если inputEncoding не указан, ожидается, что otherPublicKey будет Buffer, TypedArray или DataView. .

Если задано outputEncoding, будет возвращена строка; в противном случае возвращается буфер.

ecdh.computeSecret выдаст ошибку ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY, когда otherPublicKey находится за пределами эллиптической кривой. Поскольку otherPublicKey обычно предоставляется удаленным пользователем по небезопасной сети, обязательно обработайте это исключение соответствующим образом..

ecdh.generateKeys ([кодировка [, формат]]) #

encoding & # x3C; string> Кодировка возвращаемого значения. формат & # x3C; строка> По умолчанию: ‘несжатый’ Возвращает: & # x3C; Buffer> | & # x3C; строка>

Создает частные и общедоступные значения ключей EC Диффи-Хеллмана и возвращает открытый ключ в указанном формате и кодировке. Этот ключ должен быть передан другой стороне.

Аргумент формата указывает кодировку точки и может быть «сжатым» или «несжатым». Если формат не указан, точка будет возвращена в несжатом формате..

Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

ecdh.getPrivateKey ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; string> EC Диффи-Хеллмана в указанной кодировке .

Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

ecdh.getPublicKey ([кодировка] [, формат]) #

encoding & # x3C; string> Кодировка возвращаемого значения. формат & # x3C; строка> По умолчанию: ‘несжатый’ Возвращает: & # x3C; Buffer> | & # x3C; string> Открытый ключ EC Diffie-Hellman в указанной кодировке и формате. .

Аргумент формата указывает кодировку точки и может быть «сжатым» или «несжатым». Если формат не указан, точка будет возвращена в «несжатом» формате..

Если указана кодировка, возвращается строка; в противном случае возвращается буфер.

ecdh.setPrivateKey (privateKey [, кодировка]) #

privateKey & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки privateKey.

Устанавливает закрытый ключ EC Diffie-Hellman. Если указана кодировка, предполагается, что privateKey будет строкой; в противном случае ожидается, что privateKey будет Buffer, TypedArray или DataView .

Если privateKey недействителен для кривой, указанной при создании объекта ECDH, выдается ошибка. После установки закрытого ключа соответствующая общедоступная точка (ключ) также создается и устанавливается в объекте ECDH..

ecdh.setPublicKey (publicKey [, кодировка]) #

publicKey & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки publicKey.

Устанавливает открытый ключ EC Diffie-Hellman. Если указана кодировка, ожидается, что publicKey будет строкой; в противном случае ожидается Buffer, TypedArray или DataView.

Обычно нет причин для вызова этого метода, потому что ECDH требует только закрытый ключ и открытый ключ другой стороны для вычисления общего секрета. Обычно вызывается либо ecdh.generateKeys (), либо ecdh.setPrivateKey (). Метод ecdh.setPrivateKey () пытается сгенерировать общедоступную точку / ключ, связанный с устанавливаемым закрытым ключом..

Пример (получение общего секрета):

Класс: Hash #

Расширяет: & # x3C; stream.Transform>

Класс Hash – это утилита для создания хеш-дайджестов данных. Его можно использовать одним из двух способов:

Как поток, который доступен как для чтения, так и для записи, где данные записываются для создания вычисленного хеш-дайджеста на читаемой стороне или с использованием методов hash.update () и hash.digest () для создания вычисленного хеш-кода..

Метод crypto.createHash () используется для создания экземпляров Hash. Объекты хеширования не должны создаваться напрямую с использованием ключевого слова new..

Пример: использование объектов Hash в качестве потоков:

Пример: использование хэша и конвейерных потоков:

Пример: использование методов hash.update () и hash.digest ():

hash.copy ([параметры]) #

options & # x3C; Object> stream.transform options Возвращает: & # x3C; Hash>

Создает новый объект Hash, который содержит глубокую копию внутреннего состояния текущего объекта Hash.

Необязательный аргумент options управляет поведением потока. Для хэш-функций XOF, таких как ‘shake256’, можно использовать параметр outputLength, чтобы указать желаемую длину вывода в байтах..

Ошибка возникает при попытке скопировать объект Hash после того, как был вызван его метод hash.digest ()..

hash.digest ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Вычисляет дайджест всех данных, переданных для хеширования (с использованием метода hash.update ()). Если указана кодировка, будет возвращена строка; в противном случае возвращается буфер.

Объект Hash нельзя использовать снова после вызова метода hash.digest (). Множественные вызовы вызовут ошибку.

hash.update (data [, inputEncoding]) #

По умолчанию inputEncoding изменен с двоичного на utf8. .

data & # x3C; string> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки данных.

Обновляет хеш-содержимое заданными данными, кодировка которых указана в inputEncoding. Если кодировка не указана, а данные являются строкой, применяется кодировка utf8. Если данные представляют собой буфер, TypedArray или DataView, inputEncoding игнорируется..

Это можно вызывать много раз с новыми данными при потоковой передаче..

Класс: Hmac #

Расширяет: & # x3C; stream.Transform>

Класс Hmac – это утилита для создания криптографических дайджестов HMAC. Его можно использовать одним из двух способов:

Как поток, который доступен как для чтения, так и для записи, где данные записываются для создания вычисленного дайджеста HMAC на читаемой стороне, или Использование методов hmac.update () и hmac.digest () для создания вычисленного дайджеста HMAC.

Метод crypto.createHmac () используется для создания экземпляров Hmac. Объекты Hmac не должны создаваться напрямую с использованием ключевого слова new..

Пример: использование объектов Hmac в качестве потоков:

Пример: использование Hmac и конвейерных потоков:

Пример: использование методов hmac.update () и hmac.digest ():

hmac.digest ([кодировка]) #

encoding & # x3C; string> Кодировка возвращаемого значения. Возвращает: & # x3C; Buffer> | & # x3C; строка>

Вычисляет дайджест HMAC всех данных, переданных с помощью hmac.update (). Если указана кодировка, возвращается строка; в противном случае возвращается буфер;

Объект Hmac нельзя использовать снова после вызова hmac.digest (). Многократные вызовы hmac.digest () приведут к выдаче ошибки.

hmac.update (data [, inputEncoding]) #

По умолчанию inputEncoding изменен с двоичного на utf8. .

data & # x3C; string> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки данных.

Обновляет содержимое Hmac заданными данными, кодировка которых указана в inputEncoding. Если кодировка не указана, а данные являются строкой, применяется кодировка utf8. Если данные представляют собой буфер, TypedArray или DataView, inputEncoding игнорируется..

Это можно вызывать много раз с новыми данными, когда они передаются в потоковом режиме..

Класс: KeyObject #

Экземпляры этого класса теперь можно передавать рабочим потокам с помощью postMessage. .

Этот класс теперь экспортирован.

Node.js использует класс KeyObject для представления симметричного или асимметричного ключа, и каждый вид ключа предоставляет разные функции. Методы crypto.createSecretKey (), crypto.createPublicKey () и crypto.createPrivateKey () используются для создания экземпляров KeyObject. Объекты KeyObject не должны создаваться напрямую с использованием ключевого слова new..

Большинству приложений следует рассмотреть возможность использования нового API KeyObject вместо передачи ключей в виде строк или буферов из-за улучшенных функций безопасности..

Экземпляры KeyObject могут быть переданы в другие потоки через postMessage (). Получатель получает клонированный объект KeyObject, и его необязательно указывать в аргументе transferList..

Статический метод: KeyObject.from (key) #

key & # x3C; CryptoKey> Возвращает: & # x3C; KeyObject>

Пример: преобразование экземпляра CryptoKey в KeyObject:

keyObject.asymmetricKeyDetails #

modulusLength: & # x3C; number> Размер ключа в битах (RSA, DSA). publicExponent: & # x3C; bigint> Открытый показатель степени (RSA). divisorLength: & # x3C; number> Размер q в битах (DSA). namedCurve: & # x3C; string> Имя кривой (EC).

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

Параметры RSA-PSS, DH или любые будущие детали типа ключа могут быть представлены через этот API с использованием дополнительных атрибутов..

keyObject.asymmetricKeyType #

Добавлена ​​поддержка dh .

Добавлена ​​поддержка для ‘rsa-pss’ .

Это свойство теперь возвращает значение undefined для экземпляров KeyObject нераспознанного типа вместо прерывания..

Добавлена ​​поддержка x25519 и x448. .

Добавлена ​​поддержка ed25519 и ed448. .

Для асимметричных ключей это свойство представляет тип ключа. Поддерживаемые типы ключей:

‘rsa’ (OID 1.2.840.113549.1.1.1) ‘rsa-pss’ (OID 1.2.840.113549.1.1.10) ‘dsa’ (OID 1.2.840.10040.4.1) ‘ec’ (OID 1.2.840.10045.2.1) ‘x25519’ (OID 1.3.101.110) ‘x448’ (OID 1.3.101.111) ‘ed25519’ (OID 1.3.101.112) ‘ed448’ (OID 1.3.101.113) ‘dh’ (OID 1.2.840.113549.1.3.1)

Это свойство не определено для нераспознанных типов KeyObject и симметричных ключей..

keyObject.export ([параметры]) #

Добавлена ​​поддержка формата jwk..

параметры: & # x3C; Объект> Возвращает: & # x3C; строка> | & # x3C; Буфер> | & # x3C; Объект>

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

формат: & # x3C; строка> Должен быть ‘buffer’ (по умолчанию) или ‘jwk’ .

Для открытых ключей могут использоваться следующие варианты кодирования:

тип: & # x3C; string> Должен быть одним из ‘pkcs1’ (только RSA) или ‘spki’. формат: & # x3C; строка> Должно быть ‘pem’, ‘der’ или ‘jwk’ .

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

type: & # x3C; string> Должен быть одним из ‘pkcs1’ (только RSA), ‘pkcs8’ или ‘sec1’ (только EC). формат: & # x3C; string> Должен быть pem, der или jwk. cipher: & # x3C; string> Если указано, закрытый ключ будет зашифрован заданным шифром и парольной фразой с использованием шифрования на основе пароля PKCS # 5 v2.0. кодовая фраза: & # x3C; string> | & # x3C; Buffer> Парольная фраза для шифрования, см. шифр .

Тип результата зависит от выбранного формата кодирования, когда PEM результатом является строка, когда DER это будет буфер, содержащий данные, закодированные как DER, когда JWK это будет объект.

Когда был выбран формат кодирования JWK, все остальные параметры кодирования игнорируются..

Ключи типа PKCS # 1, SEC1 и PKCS # 8 могут быть зашифрованы с использованием комбинации параметров шифра и формата. Тип PKCS # 8 может использоваться с любым форматом для шифрования любого ключевого алгоритма (RSA, EC или DH) путем указания шифра. PKCS # 1 и SEC1 могут быть зашифрованы только путем указания шифра при использовании формата PEM. Для максимальной совместимости используйте PKCS # 8 для зашифрованных закрытых ключей. Поскольку PKCS # 8 определяет собственный механизм шифрования, шифрование на уровне PEM не поддерживается при шифровании ключа PKCS # 8. См. RFC 5208 для шифрования PKCS # 8 и RFC 1421 для шифрования PKCS # 1 и SEC1..

keyObject.symmetricKeySize #

Для секретных ключей это свойство представляет размер ключа в байтах. Это свойство не определено для асимметричных ключей..

keyObject.type #

В зависимости от типа этого KeyObject это свойство является либо «секретным» для секретных (симметричных) ключей, «общедоступным» для открытых (асимметричных) ключей или «частным» для частных (асимметричных) ключей..

Класс: Знак #

Расширяет: & # x3C; stream.Writable>

Класс Sign – это утилита для генерации подписей. Его можно использовать одним из двух способов:

В качестве записываемого потока, в который записываются данные, которые должны быть подписаны, и метод sign.sign () используется для генерации и возврата подписи или Использование методов sign.update () и sign.sign () для создания подписи.

Метод crypto.createSign () используется для создания экземпляров Sign. Аргумент – это строковое имя используемой хеш-функции. Объекты подписи не должны создаваться напрямую с использованием нового ключевого слова..

Пример: использование объектов Sign и Verify в качестве потоков:

Пример: использование методов sign.update () и verify.update ():

sign.sign (privateKey [, outputEncoding]) #

PrivateKey также может быть ArrayBuffer и CryptoKey..

Эта функция теперь поддерживает подписи IEEE-P1363 DSA и ECDSA..

Эта функция теперь поддерживает ключи RSA-PSS..

Эта функция теперь поддерживает ключевые объекты.

Добавлена ​​поддержка RSASSA-PSS и дополнительных опций..

privateKey & # x3C; Object> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> dsaEncoding & # x3C; string> padding & # x3C; integer> saltLength & # x3C; integer>

Вычисляет подпись для всех передаваемых данных, используя либо sign.update (), либо sign.write (). .

Если privateKey не является KeyObject, эта функция ведет себя так, как если бы privateKey был передан в crypto.createPrivateKey (). Если это объект, можно передать следующие дополнительные свойства:

dsaEncoding & # x3C; string> Для DSA и ECDSA этот параметр определяет формат сгенерированной подписи. Это может быть одно из следующих значений:

‘der’ (по умолчанию): кодировка структуры подписи ASN.1 в формате DER (r, s). ‘ieee-p1363’: формат подписи r || s, как предлагается в IEEE-P1363.

padding & # x3C; integer> Необязательное значение заполнения для RSA, одно из следующих:

криптографические константы.RSA_PKCS1_PADDING (по умолчанию) криптографические константы.RSA_PKCS1_PSS_PADDING.

RSA_PKCS1_PSS_PADDING будет использовать MGF1 с той же хэш-функцией, которая использовалась для подписи сообщения, как указано в разделе 3.1 RFC 4055, если только хеш-функция MGF1 не была указана как часть ключа в соответствии с разделом 3.3 RFC 4055..

saltLength & # x3C; integer> Длина соли при заполнении RSA_PKCS1_PSS_PADDING. Специальное значение crypto.constants.RSA_PSS_SALTLEN_DIGEST устанавливает длину соли равной размеру дайджеста, crypto.constants.RSA_PSS_SALTLEN_MAX_SIGN (по умолчанию) устанавливает максимально допустимое значение.

Если предоставляется outputEncoding, возвращается строка; в противном случае возвращается буфер.

Объект Sign не может быть снова использован после вызова метода sign.sign (). Множественные вызовы sign.sign () приведут к выдаче ошибки.

sign.update (data [, inputEncoding]) #

По умолчанию inputEncoding изменен с двоичного на utf8. .

data & # x3C; string> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки данных.

Обновляет содержимое Sign заданными данными, кодировка которых указана в inputEncoding. Если кодировка не указана, а данные являются строкой, применяется кодировка utf8. Если данные представляют собой буфер, TypedArray или DataView, inputEncoding игнорируется..

Это можно вызывать много раз с новыми данными, когда они передаются в потоковом режиме..

Класс: Проверить #

Расширяет: & # x3C; stream.Writable>

Класс Verify – это утилита для проверки подписей. Его можно использовать одним из двух способов:

В качестве записываемого потока, в котором записанные данные используются для проверки на соответствие предоставленной подписи, или с использованием методов verify.update () и verify.verify () для проверки подписи.

Метод crypto.createVerify () используется для создания экземпляров Verify. Убедитесь, что объекты не должны создаваться напрямую с использованием нового ключевого слова.

См. Примеры в разделе “Знак”..

verify.update (data [, inputEncoding]) #

По умолчанию inputEncoding изменен с двоичного на utf8. .

data & # x3C; string> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> inputEncoding & # x3C; string> Кодировка строки данных.

Обновляет содержимое Verify заданными данными, кодировка которых указана в inputEncoding. Если inputEncoding не указан, а данные являются строкой, применяется кодировка utf8. Если данные представляют собой буфер, TypedArray или DataView, inputEncoding игнорируется..

Это можно вызывать много раз с новыми данными, когда они передаются в потоковом режиме..

verify.verify (объект, подпись [, signatureEncoding]) #

Объект также может быть ArrayBuffer и CryptoKey..

Эта функция теперь поддерживает подписи IEEE-P1363 DSA и ECDSA..

Эта функция теперь поддерживает ключи RSA-PSS..

Ключ теперь может быть закрытым ключом.

Добавлена ​​поддержка RSASSA-PSS и дополнительных опций..

объект & # x3C; Объект> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> dsaEncoding & # x3C; string> padding & # x3C; integer> saltLength & # x3C; integer>

Проверяет предоставленные данные, используя указанный объект и подпись .

Если объект не является KeyObject, эта функция ведет себя так, как если бы объект был передан в crypto.createPublicKey (). Если это объект, можно передать следующие дополнительные свойства:

dsaEncoding & # x3C; string> Для DSA и ECDSA этот параметр определяет формат подписи. Это может быть одно из следующих значений:

‘der’ (по умолчанию): кодирование структуры подписи ASN.1 в DER-кодировке (r, s). ‘ieee-p1363’: формат подписи r || s, как предлагается в IEEE-P1363.

padding & # x3C; integer> Необязательное значение заполнения для RSA, одно из следующих:

криптографические константы.RSA_PKCS1_PADDING (по умолчанию) криптографические константы.RSA_PKCS1_PSS_PADDING.

RSA_PKCS1_PSS_PADDING будет использовать MGF1 с той же хэш-функцией, которая использовалась для проверки сообщения, как указано в разделе 3.1 RFC 4055, если только хеш-функция MGF1 не была указана как часть ключа в соответствии с разделом 3.3 RFC 4055.

saltLength & # x3C; integer> Длина соли при заполнении RSA_PKCS1_PSS_PADDING. Специальное значение crypto.constants.RSA_PSS_SALTLEN_DIGEST устанавливает длину соли равной размеру дайджеста, crypto.constants.RSA_PSS_SALTLEN_AUTO (по умолчанию) определяет ее автоматически.

Аргумент подписи – это ранее вычисленная подпись для данных в файле signatureEncoding. Если указано signatureEncoding, ожидается, что подпись будет строкой; в противном случае ожидается, что подпись будет буфером, TypedArray или DataView. .

Объект verify нельзя использовать снова после вызова verify.verify (). Множественные вызовы verify.verify () приведут к выдаче ошибки.

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

Класс: X509Certificate #

Инкапсулирует сертификат X509 и обеспечивает доступ только для чтения к его информации.

новый X509Certificate (буфер) #

буфер & # x3C; строка> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; DataView> Сертификат X509 в кодировке PEM или DER.

x509.ca #

Тип: & # x3C; boolean> Будет истинным, если это сертификат центра сертификации (ca).

x509.checkEmail (электронная почта [, параметры]) #

email & # x3C; string> options & # x3C; Object> subject & # x3C; string> ‘always’ или ‘never’. По умолчанию: «всегда». подстановочные знаки & # x3C; boolean> По умолчанию: true. partialWildcards & # x3C; boolean> По умолчанию: true. multiLabelWildcards & # x3C; boolean> По умолчанию: false. singleLabelSubdomains & # x3C; boolean> По умолчанию: false .

Проверяет, соответствует ли сертификат указанному адресу электронной почты.

x509.checkHost (имя [, параметры]) #

имя & # x3C; строка> параметры & # x3C; Объект> тема & # x3C; строка> ‘всегда’ или ‘никогда’. По умолчанию: «всегда». подстановочные знаки & # x3C; boolean> По умолчанию: true. partialWildcards & # x3C; boolean> По умолчанию: true. multiLabelWildcards & # x3C; boolean> По умолчанию: false. singleLabelSubdomains & # x3C; boolean> По умолчанию: false .

Проверяет, соответствует ли сертификат заданному имени хоста.

x509.checkIP (ip [, параметры]) #

ip & # x3C; string> options & # x3C; Object> subject & # x3C; string> ‘always’ или ‘never’. По умолчанию: «всегда». подстановочные знаки & # x3C; boolean> По умолчанию: true. partialWildcards & # x3C; boolean> По умолчанию: true. multiLabelWildcards & # x3C; boolean> По умолчанию: false. singleLabelSubdomains & # x3C; boolean> По умолчанию: false .

Проверяет, соответствует ли сертификат указанному IP-адресу (IPv4 или IPv6).

x509.checkIssued (otherCert) #

otherCert & # x3C; X509Certificate> Возвращает: & # x3C; логическое>

Проверяет, был ли этот сертификат выдан данным otherCert .

x509.checkPrivateKey (privateKey) #

privateKey & # x3C; KeyObject> Закрытый ключ. Возвращает: & # x3C; boolean>

Проверяет, соответствует ли открытый ключ этого сертификата заданному закрытому ключу..

x509.fingerprint #

Тип: & # x3C; строка>

Отпечаток SHA-1 этого сертификата.

x509.fingerprint256 #

Тип: & # x3C; строка>

Отпечаток этого сертификата SHA-256.

x509.infoAccess #

Тип: & # x3C; строка>

Содержание доступа к информации этого сертификата.

x509.issuer #

Тип: & # x3C; строка>

Идентификация эмитента, включенная в этот сертификат.

x509.issuerCertificate #

Введите: & # x3C; X509Certificate>

Сертификат эмитента или undefined, если сертификат эмитента недоступен.

x509.keyUsage #

Введите: & # x3C; string []>

Массив с подробным описанием использования ключей для этого сертификата..

x509.publicKey #

Тип: & # x3C; KeyObject>

Открытый ключ & # x3C; KeyObject> для этого сертификата..

x509.raw #

Тип: & # x3C; Buffer>

Буфер, содержащий кодировку DER этого сертификата.

x509.serialNumber #

Тип: & # x3C; строка>

Серийный номер этого сертификата.

x509.subject #

Тип: & # x3C; строка>

Полный предмет этого сертификата.

x509.subjectAltName #

Тип: & # x3C; строка>

Альтернативное имя субъекта, указанное для этого сертификата.

x509.toJSON () #

Тип: & # x3C; строка>

Для сертификатов X509 нет стандартной кодировки JSON. Метод toJSON () возвращает строку, содержащую сертификат в кодировке PEM..

x509.toLegacyObject () #

Тип: & # x3C; Object>

Возвращает информацию об этом сертификате, используя устаревшую кодировку объекта сертификата..

x509.toString () #

Тип: & # x3C; строка>

Возвращает сертификат в кодировке PEM.

x509.validFrom #

Тип: & # x3C; строка>

Дата / время, с которого этот сертификат считается действительным..

x509.validTo #

Тип: & # x3C; строка>

Дата / время, до которого этот сертификат считается действительным..

x509.verify (publicKey) #

publicKey & # x3C; KeyObject> Открытый ключ. Возвращает: & # x3C; boolean>

Проверяет, что этот сертификат был подписан данным открытым ключом. Не выполняет никаких других проверок сертификата..

методы и свойства криптомодуля #

крипто.константы #

Возвращает: & # x3C; Object> Объект, содержащий часто используемые константы для операций, связанных с шифрованием и безопасностью. Конкретные определенные в настоящее время константы описаны в Crypto constants..

крипто.DEFAULT_ENCODING #

Кодировка по умолчанию, используемая для функций, которые могут принимать строки или буферы. Значение по умолчанию – ‘buffer’, что делает методы по умолчанию для объектов Buffer..

Механизм crypto.DEFAULT_ENCODING предоставляется для обратной совместимости с устаревшими программами, которые ожидают, что ‘latin1’ будет кодировкой по умолчанию..

Новые приложения должны ожидать, что по умолчанию будет буфер. .

Это свойство устарело.

crypto.fips #

Свойство для проверки и контроля того, используется ли в настоящее время поставщик шифрования, совместимый с FIPS. Для установки значения true требуется сборка FIPS для Node.js..

Это свойство устарело. Пожалуйста, используйте вместо них crypto.setFips () и crypto.getFips ().

crypto.checkPrime (кандидат [, параметры, [обратный вызов]]) #

кандидат & # x3C; ArrayBuffer> | & # x3C; SharedArrayBuffer> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; Просмотр данных> | & # x3C; bigint> Возможное простое число, закодированное как последовательность октетов с прямым порядком байтов произвольной длины. options & # x3C; Object> проверяет & # x3C; number> Число итераций вероятностной простоты Миллера-Рабина, которые необходимо выполнить. Когда значение равно 0 (ноль), используется ряд проверок, которые дают количество ложных срабатываний не более 2–64 для случайного ввода. Следует проявлять осторожность при выборе ряда проверок. Обратитесь к документации OpenSSL, чтобы узнать о параметрах функции nchecks BN_is_prime_ex для получения более подробной информации. По умолчанию: 0 err & # x3C; Error> Установить объект & # x3C; Error>, если во время проверки произошла ошибка. result & # x3C; boolean> true, если кандидат – простое число с вероятностью ошибки менее 0,25 ** options.checks .

Проверяет примитивность кандидата .

crypto.checkPrimeSync (кандидат [, параметры]) #

кандидат & # x3C; ArrayBuffer> | & # x3C; SharedArrayBuffer> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; Просмотр данных> | & # x3C; bigint> Возможное простое число, закодированное как последовательность октетов с прямым порядком байтов произвольной длины. options & # x3C; Object> проверяет & # x3C; number> Число итераций вероятностной простоты Миллера-Рабина, которые необходимо выполнить. Когда значение равно 0 (ноль), используется ряд проверок, которые дают количество ложных срабатываний не более 2–64 для случайного ввода. Следует проявлять осторожность при выборе ряда проверок. Обратитесь к документации OpenSSL, чтобы узнать о параметрах функции nchecks BN_is_prime_ex для получения более подробной информации. По умолчанию: 0.

Проверяет примитивность кандидата .

crypto.createCipher (алгоритм, пароль [, параметры]) #

Аргумент пароля может быть ArrayBuffer и ограничен максимум 2 ** 31 – 1 байтом..

Добавлена ​​поддержка шифров в режиме OCB..

Параметр authTagLength теперь можно использовать для создания более коротких тегов аутентификации в режиме GCM и по умолчанию равен 16 байтам..

Не рекомендуется с версии 10.0.0.

алгоритм & # x3C; строка> пароль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> options & # x3C; Object> stream.transform options Возвращает: & # x3C; Cipher>

Создает и возвращает объект Cipher, который использует заданный алгоритм и пароль. .

Аргумент options управляет поведением потока и является необязательным, кроме случаев, когда используется шифр в режиме CCM или OCB (например, ‘aes-128-ccm’). В этом случае требуется опция authTagLength, указывающая длину тега аутентификации в байтах, см. Режим CCM. В режиме GCM параметр authTagLength не требуется, но может использоваться для установки длины тега аутентификации, который будет возвращен getAuthTag () и по умолчанию равен 16 байтам..

Алгоритм зависит от OpenSSL, примерами являются ‘aes192’ и т. Д. В последних выпусках OpenSSL список openssl-алгоритмов шифрования (openssl list-cipher-Algorithms для более старых версий OpenSSL) будет отображать доступные алгоритмы шифрования..

Пароль используется для получения ключа шифрования и вектора инициализации (IV). Значение должно быть строкой в ​​кодировке latin1, буфером, TypedArray или DataView. .

Реализация crypto.createCipher () извлекает ключи с помощью функции OpenSSL EVP_BytesToKey с алгоритмом дайджеста, установленным на MD5, одной итерацией и без соли. Отсутствие соли позволяет атаковать по словарю, поскольку один и тот же пароль всегда создает один и тот же ключ. Малое количество итераций и некриптографически безопасный алгоритм хеширования позволяют очень быстро проверять пароли..

В соответствии с рекомендацией OpenSSL использовать более современный алгоритм вместо EVP_BytesToKey, разработчикам рекомендуется получить ключ и IV самостоятельно с помощью crypto.scrypt () и использовать crypto.createCipheriv () для создания объекта Cipher. Пользователи не должны использовать шифры с режимом счетчика (например, CTR, GCM или CCM) в crypto.createCipher (). Когда они используются, выдается предупреждение, чтобы избежать риска повторного использования IV, вызывающего уязвимости. Для случая, когда IV повторно используется в GCM, см. Подробности в разделе «Неуважение к противникам»..

crypto.createCipheriv (алгоритм, ключ, iv [, параметры]) #

Аргументы password и iv могут быть ArrayBuffer, каждый из которых ограничен максимум 2 ** 31 – 1 байтом..

Ключевым аргументом теперь может быть KeyObject. .

Теперь поддерживается шифр chacha20-poly1305..

Добавлена ​​поддержка шифров в режиме OCB..

Параметр authTagLength теперь можно использовать для создания более коротких тегов аутентификации в режиме GCM и по умолчанию равен 16 байтам..

Параметр iv теперь может быть нулевым для шифров, которым не нужен вектор инициализации..

алгоритм & # x3C; строка> ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> iv & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; null> options & # x3C; Object> stream.transform options Возвращает: & # x3C; Cipher>

Создает и возвращает объект Cipher с заданным алгоритмом, ключом и вектором инициализации (iv).

Аргумент options управляет поведением потока и является необязательным, кроме случаев, когда используется шифр в режиме CCM или OCB (например, ‘aes-128-ccm’). В этом случае требуется опция authTagLength, указывающая длину тега аутентификации в байтах, см. Режим CCM. В режиме GCM параметр authTagLength не требуется, но может использоваться для установки длины тега аутентификации, который будет возвращен getAuthTag () и по умолчанию равен 16 байтам..

Алгоритм зависит от OpenSSL, примеры: ‘aes192’ и т. Д. В последних выпусках OpenSSL список openssl-алгоритмов шифрования (openssl list-cipher-Algorithms для старых версий OpenSSL) будет отображать доступные алгоритмы шифрования.

Ключ – это необработанный ключ, используемый алгоритмом, а iv – вектор инициализации. Оба аргумента должны быть строками в кодировке «utf8», буферами, TypedArray или DataView. Ключ необязательно может быть KeyObject типа secret. Если шифру не нужен вектор инициализации, iv может быть нулевым .

При передаче строк для ключа или iv следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

Векторы инициализации должны быть непредсказуемыми и уникальными; в идеале они будут криптографически случайными. Они не обязательно должны быть секретными: IV обычно просто добавляются к сообщениям с зашифрованным текстом в незашифрованном виде. Может показаться противоречивым, что что-то должно быть непредсказуемым и уникальным, но не обязательно секретным; помните, что злоумышленник не должен иметь возможность заранее предсказать, каким будет данный IV..

crypto.createDecipher (алгоритм, пароль [, параметры]) #

Добавлена ​​поддержка шифров в режиме OCB..

Не рекомендуется с версии 10.0.0.

алгоритм & # x3C; строка> пароль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> options & # x3C; Object> stream.transform options Возвращает: & # x3C; Decipher>

Создает и возвращает объект Decipher, который использует заданный алгоритм и пароль (ключ).

Аргумент options управляет поведением потока и является необязательным, кроме случаев, когда используется шифр в режиме CCM или OCB (например, ‘aes-128-ccm’). В этом случае требуется опция authTagLength, указывающая длину тега аутентификации в байтах, см. Режим CCM..

Реализация crypto.createDecipher () извлекает ключи с помощью функции OpenSSL EVP_BytesToKey с алгоритмом дайджеста, установленным на MD5, одной итерацией и без соли. Отсутствие соли позволяет атаковать по словарю, поскольку один и тот же пароль всегда создает один и тот же ключ. Малое количество итераций и некриптографически безопасный алгоритм хеширования позволяют очень быстро проверять пароли..

В соответствии с рекомендацией OpenSSL использовать более современный алгоритм вместо EVP_BytesToKey, разработчикам рекомендуется получить ключ и IV самостоятельно с помощью crypto.scrypt () и использовать crypto.createDecipheriv () для создания объекта Decipher..

crypto.createDecipheriv (алгоритм, ключ, iv [, параметры]) #

Ключевым аргументом теперь может быть KeyObject. .

Теперь поддерживается шифр chacha20-poly1305..

Добавлена ​​поддержка шифров в режиме OCB..

Параметр authTagLength теперь можно использовать для ограничения допустимой длины тега аутентификации GCM..

Параметр iv теперь может быть нулевым для шифров, которым не нужен вектор инициализации..

алгоритм & # x3C; строка> ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> iv & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; null> options & # x3C; Object> stream.transform options Возвращает: & # x3C; Decipher>

Создает и возвращает объект Decipher, который использует заданный алгоритм, ключ и вектор инициализации (iv).

Аргумент options управляет поведением потока и является необязательным, кроме случаев, когда используется шифр в режиме CCM или OCB (например, ‘aes-128-ccm’). В этом случае требуется опция authTagLength, указывающая длину тега аутентификации в байтах, см. Режим CCM. В режиме GCM опция authTagLength не требуется, но может использоваться для ограничения принятых тегов аутентификации тегами с указанной длиной..

Алгоритм зависит от OpenSSL, примеры: ‘aes192’ и т. Д. В последних выпусках OpenSSL список openssl-алгоритмов шифрования (openssl list-cipher-Algorithms для старых версий OpenSSL) будет отображать доступные алгоритмы шифрования.

Ключ – это необработанный ключ, используемый алгоритмом, а iv – вектор инициализации. Оба аргумента должны быть строками в кодировке «utf8», буферами, TypedArray или DataView. Ключ необязательно может быть KeyObject типа secret. Если шифру не нужен вектор инициализации, iv может быть нулевым .

При передаче строк для ключа или iv следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

Векторы инициализации должны быть непредсказуемыми и уникальными; в идеале они будут криптографически случайными. Они не обязательно должны быть секретными: IV обычно просто добавляются к сообщениям с зашифрованным текстом в незашифрованном виде. Может показаться противоречивым, что что-то должно быть непредсказуемым и уникальным, но не обязательно секретным; помните, что злоумышленник не должен иметь возможность заранее предсказать, каким будет данный IV..

crypto.createDiffieHellman (prime [, primeEncoding] [, generator] [, generatorEncoding]) #

Теперь основным аргументом может быть любой TypedArray или DataView..

Теперь основным аргументом может быть Uint8Array..

Значение по умолчанию для параметров кодирования изменено с двоичного на utf8. .

Добавлено в v0.11.12.

простое число & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> primeEncoding & # x3C; string> Кодировка простой строки. генератор & # x3C; число> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> По умолчанию: 2 generatorEncoding & # x3C; string> Кодировка строки генератора. Возвращает: & # x3C; DiffieHellman>

Создает объект обмена ключами Диффи-Хеллмана с использованием предоставленного простого числа и необязательного специального генератора .

Аргумент генератора может быть числом, строкой или буфером. Если генератор не указан, используется значение 2.

Если указано primeEncoding, ожидается, что prime будет строкой; в противном случае ожидается Buffer, TypedArray или DataView.

Если указано generatorEncoding, предполагается, что генератор будет строкой; в противном случае ожидается число, Buffer, TypedArray или DataView..

crypto.createDiffieHellman (primeLength [, generator]) #

primeLength & # x3C; number> generator & # x3C; number> По умолчанию: 2 Возвращает: & # x3C; DiffieHellman>

Создает объект обмена ключами DiffieHellman и генерирует простое число битов primeLength с использованием дополнительного специального числового генератора. Если генератор не указан, используется значение 2.

crypto.createDiffieHellmanGroup (имя) #

name & # x3C; string> Возвращает: & # x3C; DiffieHellmanGroup>

crypto.createECDH (имя кривой) #

curveName & # x3C; string> Возвращает: & # x3C; ECDH>

Создает объект обмена ключами Elliptic Curve Diffie-Hellman (ECDH), используя предопределенную кривую, заданную строкой curveName. Используйте crypto.getCurves (), чтобы получить список доступных имен кривых. В последних выпусках OpenSSL openssl ecparam -list_curves также будет отображать имя и описание каждой доступной эллиптической кривой..

crypto.createHash (алгоритм [, параметры]) #

Добавлена ​​опция outputLength для хэш-функций XOF..

алгоритм & # x3C; string> options & # x3C; Object> stream.transform options Возвращает: & # x3C; Hash>

Создает и возвращает объект Hash, который можно использовать для генерации хеш-дайджестов с использованием заданного алгоритма. Необязательный аргумент options управляет поведением потока. Для хэш-функций XOF, таких как ‘shake256’, можно использовать параметр outputLength, чтобы указать желаемую длину вывода в байтах..

Алгоритм зависит от доступных алгоритмов, поддерживаемых версией OpenSSL на платформе. Примерами являются ‘sha256’, ‘sha512’ и т. Д. В последних выпусках OpenSSL список -digest-алгоритмы openssl (openssl list-message-digest-алгоритмы для более старых версий OpenSSL) будут отображать доступные алгоритмы дайджеста..

Пример: создание суммы sha256 файла.

crypto.createHmac (алгоритм, ключ [, параметры]) #

Ключ также может быть ArrayBuffer или CryptoKey. Добавлена ​​опция кодирования. Ключ не может содержать более 2 ** 32 – 1 байта.

Ключевым аргументом теперь может быть KeyObject. .

алгоритм & # x3C; строка> ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> options & # x3C; Object> stream.transform options encoding & # x3C; string> Кодировка строки, используемая, когда ключ является строкой.

Создает и возвращает объект Hmac, который использует данный алгоритм и ключ. Необязательный аргумент параметров управляет поведением потока.

Алгоритм зависит от доступных алгоритмов, поддерживаемых версией OpenSSL на платформе. Примерами являются ‘sha256’, ‘sha512’ и т. Д. В последних выпусках OpenSSL список -digest-алгоритмы openssl (openssl list-message-digest-алгоритмы для более старых версий OpenSSL) будут отображать доступные алгоритмы дайджеста..

Ключ – это ключ HMAC, используемый для генерации криптографического хэша HMAC. Если это KeyObject, его тип должен быть секретным. .

Пример: создание sha256 HMAC файла.

crypto.createPrivateKey (ключ) #

Ключ также может быть объектом JWK.

Ключ также может быть ArrayBuffer. Добавлена ​​опция кодирования. Ключ не может содержать более 2 ** 32 – 1 байта.

ключ & # x3C; Объект> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> ключ: & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; Object> Основной материал в формате PEM, DER или JWK. формат: & # x3C; строка> Должен быть pem, der или jwk. По умолчанию: pem. тип: & # x3C; string> Должен быть ‘pkcs1’, ‘pkcs8’ или ‘sec1’. Эта опция требуется только в том случае, если используется формат «der», в противном случае игнорируется. кодовая фраза: & # x3C; string> | & # x3C; Buffer> Кодовая фраза для расшифровки. encoding: & # x3C; string> Кодировка строки, используемая, когда ключ является строкой.

Создает и возвращает новый ключевой объект, содержащий закрытый ключ. Если ключ является строкой или буфером, предполагается формат pem; в противном случае ключ должен быть объектом со свойствами, описанными выше..

Если закрытый ключ зашифрован, необходимо указать парольную фразу. Длина ключевой фразы ограничена 1024 байтами..

crypto.createPublicKey (ключ) #

Ключ также может быть объектом JWK.

Ключ также может быть ArrayBuffer. Добавлена ​​опция кодирования. Ключ не может содержать более 2 ** 32 – 1 байта.

Ключевым аргументом теперь может быть KeyObject с типом private. .

Ключевым аргументом теперь может быть закрытый ключ.

ключ & # x3C; Объект> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> ключ: & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; Object> Ключевой материал в формате PEM, DER или JWK. формат: & # x3C; строка> Должен быть pem, der или jwk. По умолчанию: pem. тип: & # x3C; string> Должен быть ‘pkcs1’ или ‘spki’. Эта опция требуется только в том случае, если используется формат «der», в противном случае игнорируется. encoding & # x3C; string> Кодировка строки, используемая, когда ключ является строкой.

Создает и возвращает новый ключевой объект, содержащий открытый ключ. Если ключ является строкой или буфером, предполагается формат pem; если ключ является KeyObject с типом «частный», открытый ключ является производным от данного закрытого ключа; в противном случае ключ должен быть объектом со свойствами, описанными выше..

Если формат «pem», «ключ» также может быть сертификатом X.509..

Поскольку открытые ключи могут быть получены из закрытых ключей, закрытый ключ может быть передан вместо открытого ключа. В этом случае эта функция ведет себя так, как если бы был вызван crypto.createPrivateKey (), за исключением того, что тип возвращаемого объекта KeyObject будет «общедоступным» и что закрытый ключ не может быть извлечен из возвращенного объекта KeyObject. Точно так же, если задан KeyObject с типом private, будет возвращен новый KeyObject с типом public, и будет невозможно извлечь закрытый ключ из возвращенного объекта..

crypto.createSecretKey (ключ [, кодировка]) #

Ключ также может быть ArrayBuffer или строкой. Был добавлен аргумент кодировки. Ключ не может содержать более 2 ** 32 – 1 байта.

ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> encoding & # x3C; string> Кодировка строки, когда ключ является строкой. Возвращает: & # x3C; KeyObject>

Создает и возвращает новый объект ключа, содержащий секретный ключ для симметричного шифрования или Hmac. .

crypto.createSign (алгоритм [, параметры]) #

алгоритм & # x3C; string> options & # x3C; Object> stream.Writable options Returns: & # x3C; Sign>

Создает и возвращает объект Sign, который использует данный алгоритм. Используйте crypto.getHashes (), чтобы получить имена доступных алгоритмов дайджеста. Аргумент необязательных параметров управляет потоком..

В некоторых случаях экземпляр Sign может быть создан с использованием имени алгоритма подписи, такого как «RSA-SHA256», вместо алгоритма дайджеста. Это будет использовать соответствующий алгоритм дайджеста. Это не работает для всех алгоритмов подписи, таких как ‘ecdsa-with-SHA256’, поэтому лучше всегда использовать имена алгоритмов дайджеста..

crypto.createVerify (алгоритм [, параметры]) #

алгоритм & # x3C; string> options & # x3C; Object> stream.Writable options Returns: & # x3C; Verify>

Создает и возвращает объект Verify, использующий заданный алгоритм. Используйте crypto.getHashes (), чтобы получить массив имен доступных алгоритмов подписи. Аргумент необязательных параметров управляет потоком..

В некоторых случаях экземпляр Verify может быть создан с использованием имени алгоритма подписи, такого как «RSA-SHA256», вместо алгоритма дайджеста. Это будет использовать соответствующий алгоритм дайджеста. Это не работает для всех алгоритмов подписи, таких как ‘ecdsa-with-SHA256’, поэтому лучше всегда использовать имена алгоритмов дайджеста..

crypto.diffieHellman (параметры) #

параметры: & # x3C; Объект> privateKey: & # x3C; KeyObject> publicKey: & # x3C; KeyObject>

Вычисляет секрет Диффи-Хеллмана на основе privateKey и publicKey. Оба ключа должны иметь один и тот же asymmetricKeyType, который должен быть одним из dh (для Diffie-Hellman), ec (для ECDH), x448 или x25519 (для ECDH-ES)..

crypto.generateKey (тип, параметры, обратный вызов) #

type: & # x3C; string> Предполагаемое использование сгенерированного секретного ключа. В настоящее время приняты значения «hmac» и «aes». параметры: & # x3C; Object> length: & # x3C; number> Битовая длина ключа, который нужно сгенерировать. Это должно быть значение больше 0. Если тип – ‘hmac’, минимум – 1, а максимальная длина – 2 31 -1. Если значение не кратно 8, сгенерированный ключ будет усечен до Math.floor (length / 8). Если тип – aes, длина должна быть 128, 192 или 256. ошибка: & # x3C; Ошибка> ключ: & # x3C; KeyObject>

Асинхронно генерирует новый случайный секретный ключ заданной длины. Тип будет определять, какие проверки будут выполняться на длине .

crypto.generateKeyPair (тип, параметры, обратный вызов) #

Добавить поддержку Диффи-Хеллмана.

Добавить возможность генерировать пары ключей X25519 и X448.

Добавить возможность генерировать пары ключей Ed25519 и Ed448.

Функции generateKeyPair и generateKeyPairSync теперь создают ключевые объекты, если кодировка не указана..

Добавлено в v10.12.0.

тип: & # x3C; string> Должен быть ‘rsa’, ‘dsa’, ‘ec’, ‘ed25519’, ‘ed448’, ‘x25519’, ‘x448’ или ‘dh’. параметры: & # x3C; Объект> длина модуля: & # x3C; число> Размер ключа в битах (RSA, DSA). publicExponent: & # x3C; number> Открытый показатель степени (RSA). По умолчанию: 0x10001. divisorLength: & # x3C; number> Размер q в битах (DSA). namedCurve: & # x3C; string> Имя кривой для использования (EC). prime: & # x3C; Buffer> Основной параметр (DH). primeLength: & # x3C; number> Простая длина в битах (DH). генератор: & # x3C; число> Пользовательский генератор (DH). По умолчанию: 2. groupName: & # x3C; string> Имя группы Диффи-Хеллмана (DH). См. Crypto.getDiffieHellman (). publicKeyEncoding: & # x3C; Object> См. keyObject.export (). privateKeyEncoding: & # x3C; Object> См. keyObject.export (). err: & # x3C; Error> publicKey: & # x3C; string> | & # x3C; Буфер> | & # x3C; KeyObject> privateKey: & # x3C; string> | & # x3C; Буфер> | & # x3C; KeyObject>

Создает новую пару асимметричных ключей заданного типа. В настоящее время поддерживаются RSA, DSA, EC, Ed25519, Ed448, X25519, X448 и DH..

Если было указано publicKeyEncoding или privateKeyEncoding, эта функция ведет себя так, как если бы для ее результата был вызван keyObject.export (). В противном случае соответствующая часть ключа возвращается как KeyObject. .

Рекомендуется кодировать открытые ключи как spki и закрытые ключи как pkcs8 с шифрованием для длительного хранения:

По завершении будет вызван обратный вызов с ошибкой, установленной на undefined, а publicKey / privateKey представляет сгенерированную пару ключей.

Если этот метод вызывается как его версия с util.promisify () ed, он возвращает обещание для объекта со свойствами publicKey и privateKey..

crypto.generateKeyPairSync (тип, параметры) #

Добавить поддержку Диффи-Хеллмана.

Добавить возможность генерировать пары ключей Ed25519 и Ed448.

Функции generateKeyPair и generateKeyPairSync теперь создают ключевые объекты, если кодировка не указана..

Добавлено в v10.12.0.

тип: & # x3C; string> Должен быть ‘rsa’, ‘dsa’, ‘ec’, ‘ed25519’, ‘ed448’, ‘x25519’, ‘x448’ или ‘dh’. параметры: & # x3C; Объект> длина модуля: & # x3C; число> Размер ключа в битах (RSA, DSA). publicExponent: & # x3C; number> Открытый показатель степени (RSA). По умолчанию: 0x10001. divisorLength: & # x3C; number> Размер q в битах (DSA). namedCurve: & # x3C; string> Имя кривой для использования (EC). prime: & # x3C; Buffer> Основной параметр (DH). primeLength: & # x3C; number> Простая длина в битах (DH). генератор: & # x3C; число> Пользовательский генератор (DH). По умолчанию: 2. groupName: & # x3C; string> Имя группы Диффи-Хеллмана (DH). См. Crypto.getDiffieHellman (). publicKeyEncoding: & # x3C; Object> См. keyObject.export (). privateKeyEncoding: & # x3C; Object> См. keyObject.export (). publicKey: & # x3C; string> | & # x3C; Буфер> | & # x3C; KeyObject> privateKey: & # x3C; string> | & # x3C; Буфер> | & # x3C; KeyObject>

Создает новую пару асимметричных ключей заданного типа. В настоящее время https://khustinfo.com/lifestyle/poradi/biznes/roj_klub_ehto_bezzabotnaja_i_bogataja_zhizn/24-1-0-9887 поддерживаются RSA, DSA, EC, Ed25519, Ed448, X25519, X448 и DH..

Если было указано publicKeyEncoding или privateKeyEncoding, эта функция ведет себя так, как если бы для ее результата был вызван keyObject.export (). В противном случае соответствующая часть ключа возвращается как KeyObject. .

При кодировании открытых ключей рекомендуется использовать spki. При кодировании закрытых ключей рекомендуется использовать pkcs8 с надежной парольной фразой и сохранять конфиденциальность парольной фразы..

Возвращаемое значение представляет собой сгенерированную пару ключей. Когда была выбрана кодировка PEM, соответствующий ключ будет строкой, в противном случае это будет буфер, содержащий данные, закодированные как DER..

crypto.generateKeySync (тип, параметры) #

type: & # x3C; string> Предполагаемое использование сгенерированного секретного ключа. В настоящее время приняты значения «hmac» и «aes». параметры: & # x3C; Object> length: & # x3C; number> Битовая длина ключа, который нужно сгенерировать. Если тип – «hmac», минимальное значение равно 1, а максимальная длина – 2 31 -1. Если значение не кратно 8, сгенерированный ключ будет усечен до Math.floor (length / 8). Если тип – aes, длина должна быть 128, 192 или 256. .

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

crypto.generatePrime (size [, options [, callback]]) #

size & # x3C; number> Размер (в битах) простого числа для генерации. параметры & # x3C; Объект> добавить & # x3C; ArrayBuffer> | & # x3C; SharedArrayBuffer> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; Просмотр данных> | & # x3C; bigint> rem & # x3C; ArrayBuffer> | & # x3C; SharedArrayBuffer> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; Просмотр данных> | & # x3C; bigint> safe & # x3C; boolean> По умолчанию: false. bigint & # x3C; boolean> Если true, сгенерированное простое число возвращается как bigint. err & # x3C; Error> prime & # x3C; ArrayBuffer> | & # x3C; bigint>

Генерирует псевдослучайное простое число битов размера.

Если options.safe истинно, простое число будет безопасным, то есть (простое число – 1) / 2 также будет простым числом..

Параметры options.add и options.rem могут использоваться для обеспечения дополнительных требований, например, для Diffie-Hellman:

Если заданы оба параметра options.add и options.rem, простое число будет удовлетворять условию, что prime% add = rem. Если задано только options.add, а options.safe неверно, простое число будет удовлетворять условию, что простое число% add = 1. Если задано только options.add и для параметра options.safe установлено значение true, вместо этого простое число будет удовлетворять условию, что простое число% add = 3. Это необходимо, потому что prime% add = 1 для options.add> 2 будет противоречить условию, обеспечиваемому options.safe. options.rem игнорируется, если options.add не указан.

Оба options.add и options.rem должны быть закодированы как последовательности с прямым порядком байтов, если заданы как ArrayBuffer, SharedArrayBuffer, TypedArray, Buffer или DataView. .

По умолчанию простое число кодируется как последовательность октетов с прямым порядком байтов в & # x3C; ArrayBuffer>. Если опция bigint истинна, то предоставляется & # x3C; bigint>..

crypto.generatePrimeSync (размер [, параметры]) #

size & # x3C; number> Размер (в битах) простого числа для генерации. параметры & # x3C; Объект> добавить & # x3C; ArrayBuffer> | & # x3C; SharedArrayBuffer> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; Просмотр данных> | & # x3C; bigint> rem & # x3C; ArrayBuffer> | & # x3C; SharedArrayBuffer> | & # x3C; TypedArray> | & # x3C; Буфер> | & # x3C; Просмотр данных> | & # x3C; bigint> safe & # x3C; boolean> По умолчанию: false. bigint & # x3C; boolean> Когда истина, сгенерированное простое число возвращается как bigint .

Генерирует псевдослучайное простое число битов размера.

Если options.safe истинно, простое число будет безопасным, то есть (простое число – 1) / 2 также будет простым числом..

Параметры options.add и options.rem могут использоваться для обеспечения дополнительных требований, например, для Diffie-Hellman:

Если заданы оба параметра options.add и options.rem, простое число будет удовлетворять условию, что prime% add = rem. Если задано только options.add, а options.safe неверно, простое число будет удовлетворять условию, что простое число% add = 1. Если задано только options.add и для параметра options.safe установлено значение true, вместо этого простое число будет удовлетворять условию, что простое число% add = 3. Это необходимо, потому что prime% add = 1 для options.add> 2 будет противоречить условию, обеспечиваемому options.safe. options.rem игнорируется, если options.add не указан.

Оба options.add и options.rem должны быть закодированы как последовательности с прямым порядком байтов, если заданы как ArrayBuffer, SharedArrayBuffer, TypedArray, Buffer или DataView. .

По умолчанию штрих кодируется как последовательность октетов с прямым порядком байтов в & # x3C; ArrayBuffer>. Если опция bigint истинна, то предоставляется & # x3C; bigint>..

crypto.getCipherInfo (nameOrNid [, options]) #

nameOrNid: & # x3C; string> | & # x3C; number> Имя или nid запрашиваемого шифра. параметры: & # x3C; Object> keyLength: & # x3C; number> Длина тестового ключа. ivLength: & # x3C; number> Длина тестового IV. name & # x3C; string> Имя cipher nid & # x3C; number> nid блока шифра Размер & # x3C; number> Размер блока шифра в байтах. Это свойство опускается, если установлен режим «поток». ivLength & # x3C; number> Ожидаемая длина вектора инициализации или длина вектора инициализации по умолчанию в байтах. Это свойство опускается, если шифр не использует вектор инициализации. keyLength & # x3C; number> Ожидаемая длина ключа или длина ключа по умолчанию в байтах. mode & # x3C; string> Режим шифрования. Один из ‘cbc’, ‘ccm’, ‘cfb’, ‘ctr’, ‘ecb’, ‘gcm’, ‘ocb’, ‘ofb’, ‘stream’, ‘wrap’, ‘xts’. .

Возвращает информацию о заданном шифре..

Некоторые шифры принимают ключи переменной длины и векторы инициализации. По умолчанию метод crypto.getCipherInfo () возвращает значения по умолчанию для этих шифров. Чтобы проверить, подходит ли данная длина ключа или длина iv для данного шифра, используйте параметры keyLength и ivLength. Если указанные значения недопустимы, будет возвращено undefined..

crypto.getCiphers () #

Возвращает: & # x3C; string []> Массив с именами поддерживаемых алгоритмов шифрования..

crypto.getCurves () #

Возвращает: & # x3C; string []> Массив с именами поддерживаемых эллиптических кривых..

crypto.getDiffieHellman (имя группы) #

groupName & # x3C; string> Возвращает: & # x3C; DiffieHellmanGroup>

Создает предопределенный объект обмена ключами DiffieHellmanGroup. Поддерживаемые группы: ‘modp1’, ‘modp2’, ‘modp5’ (определено в RFC 2412, но см. Предостережения) и ‘modp14’, ‘modp15’, ‘modp16’, ‘modp17’, ‘modp18’ (определено в RFC 3526). Возвращаемый объект имитирует интерфейс объектов, созданных с помощью crypto.createDiffieHellman (), но не позволяет изменять ключи (например, с помощью diffieHellman.setPublicKey ()). Преимущество использования этого метода заключается в том, что сторонам не нужно заранее генерировать и обменивать групповой модуль, что экономит время процессора и связи..

Пример (получение общего секрета):

crypto.getFips () #

Возвращает: & # x3C; number> 1, если и только если в настоящее время используется FIPS-совместимый поставщик криптографии, в противном случае – 0. В будущем выпуске semver-major тип возврата этого API может быть изменен на & # x3C; boolean>.

crypto.getHashes () #

Возвращает: & # x3C; string []> Массив имен поддерживаемых алгоритмов хеширования, например «RSA-SHA256». Алгоритмы хеширования также называют алгоритмами «дайджеста»..

crypto.hkdf (дайджест, ключ, соль, информация, keylen, обратный вызов) #

digest & # x3C; string> Используемый алгоритм дайджеста. ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> Секретный ключ. Он должен быть не менее одного байта в длину. соль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Значение соли. Должен быть предоставлен, но может быть нулевой длины. info & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Дополнительная информация значение. Должен быть предоставлен, но может иметь нулевую длину и не может превышать 1024 байта. keylen & # x3C; number> Длина создаваемого ключа. Должно быть больше 0. Максимально допустимое значение в 255 раз превышает количество байтов, созданных выбранной функцией дайджеста (например, sha512 генерирует 64-байтовые хэши, в результате чего максимальный вывод HKDF составляет 16320 байтов). обратный вызов & # x3C; Функция> ошибка & # x3C; Ошибка> производный ключ & # x3C; Buffer>

HKDF – это простая функция получения ключа, определенная в RFC 5869. Данный ключ, соль и информация используются с дайджестом для получения ключа из байтов ключа..

Предоставленная функция обратного вызова вызывается с двумя аргументами: err и производный ключ. Если при получении ключа возникнет ошибка, будет установлена ​​ошибка err; в противном случае ошибка будет равна нулю. Успешно сгенерированный производный ключ будет передан в обратный вызов как & # x3C; ArrayBuffer>. Если какой-либо из входных параметров указывает недопустимые значения или типы, будет выдана ошибка..

crypto.hkdfSync (дайджест, ключ, соль, информация, keylen) #

digest & # x3C; string> Используемый алгоритм дайджеста. ключ & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> Секретный ключ. Он должен быть не менее одного байта в длину. соль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Значение соли. Должен быть предоставлен, но может быть нулевой длины. info & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Дополнительная информация значение. Должен быть предоставлен, но может иметь нулевую длину и не может превышать 1024 байта. keylen & # x3C; number> Длина создаваемого ключа. Должно быть больше 0. Максимально допустимое значение в 255 раз превышает количество байтов, созданных выбранной функцией дайджеста (например, sha512 генерирует 64-байтовые хэши, делая максимальный вывод HKDF 16320 байтов). Возвращает: & # x3C; ArrayBuffer>

Обеспечивает синхронную функцию получения ключа HKDF, как определено в RFC 5869. Данный ключ, соль и информация используются с дайджестом для получения ключа из байтов ключа..

Успешно сгенерированный производный ключ будет возвращен как & # x3C; ArrayBuffer>..

Ошибка будет выдана, если какой-либо из входных aguments указывает недопустимые значения или типы, или если производный ключ не может быть сгенерирован..

crypto.pbkdf2 (пароль, соль, итерации, keylen, дайджест, обратный вызов) #

Аргументы пароля и соли также могут быть экземплярами ArrayBuffer..

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

Параметр дайджеста теперь требуется всегда.

Вызов этой функции без передачи параметра дайджеста устарел и приведет к предупреждению..

Кодировка по умолчанию для пароля, если это строка, измененная с двоичной на utf8. .

пароль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> соль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> итераций & # x3C; number> keylen & # x3C; number> digest & # x3C; string> callback & # x3C; Function> err & # x3C; Error> производныйKey & # x3C; Buffer>

Предоставляет реализацию функции 2 асинхронного вывода ключа на основе пароля (PBKDF2). Выбранный алгоритм дайджеста HMAC, указанный дайджестом, применяется для получения ключа запрошенной длины байта (keylen) из пароля, соли и итераций. .

Предоставленная функция обратного вызова вызывается с двумя аргументами: err и производный ключ. Если при получении ключа произойдет ошибка, будет установлена ​​ошибка err; в противном случае ошибка будет равна нулю. По умолчанию успешно сгенерированный производный ключ будет передан обратному вызову как буфер. Ошибка будет выдана, если какой-либо из входных аргументов указывает недопустимые значения или типы..

Если дайджест равен нулю, будет использоваться ‘sha1’. Такое поведение устарело, укажите дайджест явно.

Аргумент итераций должен быть как можно большим числом. Чем больше количество итераций, тем более безопасным будет полученный ключ, но для завершения потребуется больше времени..

Соль должна быть максимально уникальной. Рекомендуется, чтобы соль была случайной и имела длину не менее 16 байт. См. Подробности в NIST SP 800-132..

При передаче строк для пароля или соли следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

Свойство crypto.DEFAULT_ENCODING можно использовать для изменения способа передачи производного ключа в обратный вызов. Однако это свойство устарело, и его следует избегать..

Массив поддерживаемых функций дайджеста можно получить с помощью crypto.getHashes () .

Этот API использует пул потоков libuv, что может иметь неожиданные и отрицательные последствия для производительности некоторых приложений; см. документацию UV_THREADPOOL_SIZE для получения дополнительной информации.

crypto.pbkdf2Sync (пароль, соль, итерации, keylen, дайджест) #

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

Вызов этой функции без передачи параметра дайджеста устарел и приведет к предупреждению..

Кодировка по умолчанию для пароля, если это строка, измененная с двоичной на utf8. .

пароль & # x3C; строка> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> соль & # x3C; строка> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> итераций & # x3C; number> keylen & # x3C; number> digest & # x3C; string> Возвращает: & # x3C; Buffer>

Обеспечивает синхронную реализацию функции вывода ключей 2 на основе пароля (PBKDF2). Выбранный алгоритм дайджеста HMAC, указанный дайджестом, применяется для получения ключа запрошенной длины байта (keylen) из пароля, соли и итераций. .

При возникновении ошибки будет выдано сообщение об ошибке, в противном случае полученный ключ будет возвращен в виде буфера. .

Если дайджест равен нулю, будет использоваться ‘sha1’. Такое поведение устарело, укажите дайджест явно.

Аргумент итераций должен быть как можно большим числом. Чем больше количество итераций, тем более безопасным будет полученный ключ, но для завершения потребуется больше времени..

Соль должна быть максимально уникальной. Рекомендуется, чтобы соль была случайной и имела длину не менее 16 байт. См. Подробности в NIST SP 800-132..

При передаче строк для пароля или соли следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

Свойство crypto.DEFAULT_ENCODING может использоваться для изменения способа возврата производного ключа. Однако это свойство устарело, и его следует избегать..

Массив поддерживаемых функций дайджеста можно получить с помощью crypto.getHashes () .

crypto.privateDecrypt (privateKey, буфер) #

Добавлены строки, ArrayBuffer и CryptoKey в качестве допустимых типов ключей. OaepLabel может быть ArrayBuffer. Буфер может быть строкой или ArrayBuffer. Все типы, которые принимают буферы, ограничены максимумом 2 ** 31 – 1 байтом..

Добавлена ​​опция oaepLabel.

Добавлена ​​опция oaepHash.

Эта функция теперь поддерживает ключевые объекты.

Добавлено в v0.11.14.

privateKey & # x3C; Object> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> oaepHash & # x3C; string> Хэш-функция, используемая для заполнения OAEP и MGF1. По умолчанию: ‘sha1’ oaepLabel & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Метка, используемая для заполнения OAEP. Если не указано, метка не используется. padding & # x3C; crypto.constants> Необязательное значение заполнения, определенное в crypto.constants, которое может быть: crypto.constants.RSA_NO_PADDING, crypto.constants.RSA_PKCS1_PADDING или crypto.constants.RSA_PKCS1_OAEP_PADDING .

Расшифровывает буфер с помощью privateKey. буфер был ранее зашифрован с использованием соответствующего открытого ключа, например с помощью crypto.publicEncrypt () .

Если privateKey не является KeyObject, эта функция ведет себя так, как если бы privateKey был передан в crypto.createPrivateKey (). Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_OAEP_PADDING .

crypto.privateEncrypt (privateKey, буфер) #

Добавлены строки, ArrayBuffer и CryptoKey в качестве допустимых типов ключей. Парольная фраза может быть ArrayBuffer. Буфер может быть строкой или ArrayBuffer. Все типы, которые принимают буферы, ограничены максимум 2 ** 31 – 1 байтом..

Эта функция теперь поддерживает ключевые объекты.

privateKey & # x3C; Object> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> key & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> Закрытый ключ, закодированный в PEM. кодовая фраза & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Необязательная кодовая фраза для закрытого ключа. padding & # x3C; crypto.constants> Необязательное значение заполнения, определенное в crypto.constants, которое может быть: crypto.constants.RSA_NO_PADDING или crypto.constants.RSA_PKCS1_PADDING. encoding & # x3C; string> Кодировка строки, используемая, когда буфер, ключ или фраза-пароль являются строками.

Шифрует буфер с помощью privateKey. Возвращенные данные можно расшифровать с помощью соответствующего открытого ключа, например, используя crypto.publicDecrypt () .

Если privateKey не является KeyObject, эта функция ведет себя так, как если бы privateKey был передан в crypto.createPrivateKey (). Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_PADDING .

crypto.publicDecrypt (ключ, буфер) #

Добавлены строки, ArrayBuffer и CryptoKey в качестве допустимых типов ключей. Парольная фраза может быть ArrayBuffer. Буфер может быть строкой или ArrayBuffer. Все типы, которые принимают буферы, ограничены максимум 2 ** 31 – 1 байтом..

Эта функция теперь поддерживает ключевые объекты.

ключ & # x3C; Объект> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> кодовая фраза & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Необязательная кодовая фраза для закрытого ключа. padding & # x3C; crypto.constants> Необязательное значение заполнения, определенное в crypto.constants, которое может быть: crypto.constants.RSA_NO_PADDING или crypto.constants.RSA_PKCS1_PADDING. encoding & # x3C; string> Кодировка строки, используемая, когда буфер, ключ или фраза-пароль являются строками.

Расшифровывает буфер с помощью ключа. буфер был ранее зашифрован с использованием соответствующего закрытого ключа, например с помощью crypto.privateEncrypt () .

Если ключ не является KeyObject, эта функция ведет себя так, как если бы ключ был передан в crypto.createPublicKey (). Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_PADDING .

Поскольку открытые ключи RSA могут быть получены из закрытых ключей, закрытый ключ может быть передан вместо открытого ключа..

crypto.publicEncrypt (ключ, буфер) #

Добавлены строки, ArrayBuffer и CryptoKey в качестве допустимых типов ключей. OaepLabel и кодовая фраза могут быть ArrayBuffers. Буфер может быть строкой или ArrayBuffer. Все типы, которые принимают буферы, ограничены максимум 2 ** 31 – 1 байтом..

Добавлена ​​опция oaepLabel.

Добавлена ​​опция oaepHash.

Эта функция теперь поддерживает ключевые объекты.

Добавлено в v0.11.14.

ключ & # x3C; Объект> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> key & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> Открытый или закрытый ключ, закодированный в PEM, & # x3C; KeyObject> или & # x3C; CryptoKey>. oaepHash & # x3C; string> Хеш-функция, используемая для заполнения OAEP и MGF1. По умолчанию: ‘sha1’ oaepLabel & # x3C; string> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Метка, используемая для заполнения OAEP. Если не указано, метка не используется. кодовая фраза & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Необязательная кодовая фраза для закрытого ключа. padding & # x3C; crypto.constants> Необязательное значение заполнения, определенное в crypto.constants, которое может быть: crypto.constants.RSA_NO_PADDING, crypto.constants.RSA_PKCS1_PADDING или crypto.constants.RSA_PKCS1_OAEP_PADDING. encoding & # x3C; string> Кодировка строки, используемая, когда буфер, ключ, oaepLabel или кодовая фраза являются строками.

Шифрует содержимое буфера с помощью ключа и возвращает новый буфер с зашифрованным содержимым. Возвращенные данные можно расшифровать с помощью соответствующего закрытого ключа, например, используя crypto.privateDecrypt () .

Если ключ не является KeyObject, эта функция ведет себя так, как если бы ключ был передан в crypto.createPublicKey (). Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_OAEP_PADDING .

Поскольку открытые ключи RSA могут быть получены из закрытых ключей, закрытый ключ может быть передан вместо открытого ключа..

crypto.randomBytes (размер [, обратный вызов]) #

Передача null в качестве аргумента обратного вызова теперь вызывает ERR_INVALID_CALLBACK .

size & # x3C; number> Количество байтов для генерации. Размер не должен быть больше 2 ** 31 – 1. обратный вызов & # x3C; Function> err & # x3C; Error> buf & # x3C; Buffer>

Генерирует криптостойкие псевдослучайные данные. Аргумент размера – это число, указывающее количество байтов для генерации..

Если предоставляется функция обратного вызова, байты генерируются асинхронно, а функция обратного вызова вызывается с двумя аргументами: err и buf. В случае возникновения ошибки err будет объектом Error; в противном случае он равен нулю. Аргумент buf – это буфер, содержащий сгенерированные байты..

Если функция обратного вызова не предусмотрена, случайные байты генерируются синхронно и возвращаются как буфер. Если возникнет проблема с генерацией байтов, будет выдана ошибка..

Метод crypto.randomBytes () не будет завершен, пока не будет доступна достаточная энтропия. Обычно это не должно занимать больше нескольких миллисекунд. Единственный раз, когда генерация случайных байтов может предположительно блокироваться на более длительный период времени, – сразу после загрузки, когда вся система все еще имеет низкую энтропию..

Этот API использует пул потоков libuv, что может иметь неожиданные и отрицательные последствия для производительности некоторых приложений; см. документацию UV_THREADPOOL_SIZE для получения дополнительной информации.

Асинхронная версия crypto.randomBytes () выполняется в одном запросе пула потоков. Чтобы свести к минимуму изменение длины задачи пула потоков, разбивайте большие запросы randomBytes, когда это делается как часть выполнения клиентского запроса..

crypto.randomFillSync (buffer [, смещение] [, размер]) #

Аргументом буфера может быть любой TypedArray или DataView. .

Добавлено в v7.10.0, v6.13.0.

буфер & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Должен быть предоставлен. Размер предоставленного буфера не должен быть больше 2 ** 31 – 1. смещение & # x3C; число> По умолчанию: 0 размер & # x3C; число> По умолчанию: buffer.length – смещение. Размер не должен быть больше 2 ** 31 – 1. Возвращает: & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Объект, переданный как аргумент буфера.

Любой экземпляр ArrayBuffer, TypedArray или DataView может быть передан как буфер. .

crypto.randomFill (буфер [, смещение] [, размер], обратный вызов) #

Аргументом буфера может быть любой TypedArray или DataView. .

Добавлено в v7.10.0, v6.13.0.

буфер & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Должен быть предоставлен. Размер предоставленного буфера не должен быть больше 2 ** 31 – 1. смещение & # x3C; число> По умолчанию: 0 размер & # x3C; число> По умолчанию: buffer.length – смещение. Размер не должен быть больше 2 ** 31 – 1. обратный вызов & # x3C; Функция> функция (err, buf) <> .

Эта функция похожа на crypto.randomBytes (), но требует, чтобы первым аргументом был буфер, который будет заполнен. Также требуется, чтобы обратный вызов передавался в.

Если функция обратного вызова не предусмотрена, будет выдана ошибка.

Любой экземпляр ArrayBuffer, TypedArray или DataView может быть передан как буфер. .

Хотя сюда входят экземпляры Float32Array и Float64Array, эту функцию не следует использовать для генерации случайных чисел с плавающей запятой. Результат может содержать + Infinity, -Infinity и NaN, и даже если массив содержит только конечные числа, они не извлекаются из равномерного случайного распределения и не имеют значимых нижних или верхних границ..

Этот API использует пул потоков libuv, что может иметь неожиданные и отрицательные последствия для производительности некоторых приложений; см. документацию UV_THREADPOOL_SIZE для получения дополнительной информации.

Асинхронная версия crypto.randomFill () выполняется в одном запросе пула потоков. Чтобы свести к минимуму изменение длины задачи пула потоков, разбивайте большие запросы randomFill, когда это делается как часть выполнения клиентского запроса..

crypto.randomInt ([min,] max [, callback]) #

min & # x3C; integer> Начало случайного диапазона (включительно). По умолчанию: 0. max & # x3C; integer> Конец случайного диапазона (исключая). обратный вызов & # x3C; Функция> функция (err, n) <> .

Вернуть случайное целое число n такое, что min & # x3C; = n & # x3C; Максимум . Эта реализация позволяет избежать смещения по модулю.

Диапазон (макс. – мин.) Должен быть меньше 2 48. min и max должны быть безопасными целыми числами.

Если функция обратного вызова не предусмотрена, случайное целое число генерируется синхронно..

crypto.randomUUID ([параметры]) #

options & # x3C; Object> disableEntropyCache & # x3C; boolean> По умолчанию для повышения производительности Node.js генерирует и кэширует достаточно случайных данных для генерации до 128 случайных UUID. Чтобы сгенерировать UUID без использования кеша, установите для disableEntropyCache значение true. По умолчанию: false .

Создает случайный UUID RFC 4122 версии 4. UUID генерируется с помощью криптографического генератора псевдослучайных чисел..

crypto.scrypt (пароль, соль, keylen [, параметры], обратный вызов) #

Аргументы пароля и соли также могут быть экземплярами ArrayBuffer..

Значение maxmem теперь может быть любым безопасным целым числом.

Добавлены названия параметров стоимости, размера блока и распараллеливания..

пароль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> соль & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> keylen & # x3C; number> options & # x3C; Object> cost & # x3C; number> Параметр стоимости ЦП / памяти. Должна быть степень двойки больше единицы. По умолчанию: 16384. blockSize & # x3C; number> Параметр размера блока. По умолчанию: 8. parallelization & # x3C; number> Параметр распараллеливания. По умолчанию: 1. N & # x3C; number> Псевдоним стоимости. Может быть указан только один из обоих. r & # x3C; number> Псевдоним для размера блока. Может быть указан только один из обоих. p & # x3C; number> Псевдоним для распараллеливания. Может быть указан только один из обоих. maxmem & # x3C; number> Верхняя граница памяти. Ошибка, когда (приблизительно) 128 * N * r> maxmem. По умолчанию: 32 * 1024 * 1024. err & # x3C; Ошибка> производный ключ & # x3C; Buffer>

Обеспечивает реализацию асинхронного скрипта. Scrypt – это функция получения ключей на основе пароля, которая требует больших затрат с точки зрения вычислений и памяти, чтобы сделать атаки грубой силой бесполезными..

Соль должна быть максимально уникальной. Рекомендуется, чтобы соль была случайной и имела длину не менее 16 байт. См. Подробности в NIST SP 800-132..

При передаче строк для пароля или соли следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

Функция обратного вызова вызывается с двумя аргументами: err и производный ключ. err является объектом исключения, когда получение ключа не удается, в противном случае err имеет значение null. производный ключ передается обратному вызову как буфер .

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

crypto.scryptSync (пароль, соль, keylen [, параметры]) #

Значение maxmem теперь может быть любым безопасным целым числом.

Добавлены названия параметров стоимости, размера блока и распараллеливания..

пароль & # x3C; строка> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> соль & # x3C; строка> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> keylen & # x3C; number> options & # x3C; Object> cost & # x3C; number> параметр стоимости ЦП / памяти. Должна быть степень двойки больше единицы. По умолчанию: 16384. blockSize & # x3C; number> Параметр размера блока. По умолчанию: 8. parallelization & # x3C; number> Параметр распараллеливания. По умолчанию: 1. N & # x3C; number> Псевдоним стоимости. Может быть указан только один из обоих. r & # x3C; number> Псевдоним для размера блока. Может быть указан только один из обоих. p & # x3C; number> Псевдоним для распараллеливания. Может быть указан только один из обоих. maxmem & # x3C; number> Верхняя граница памяти. Ошибка, когда (приблизительно) 128 * N * r> maxmem. По умолчанию: 32 * 1024 * 1024 .

Обеспечивает синхронную реализацию сценария. Scrypt – это функция получения ключей на основе пароля, которая требует больших затрат с точки зрения вычислений и памяти, чтобы сделать атаки грубой силой бесполезными..

Соль должна быть максимально уникальной. Рекомендуется, чтобы соль была случайной и имела длину не менее 16 байт. См. Подробности в NIST SP 800-132..

При передаче строк для пароля или соли следует учитывать предостережения при использовании строк в качестве входных данных для криптографических API..

Исключение возникает при сбое получения ключа, в противном случае производный ключ возвращается в виде буфера. .

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

crypto.secureHeapUsed () #

Возвращает: & # x3C; Object> total & # x3C; number> Общий размер выделенной безопасной кучи, указанный с помощью флага командной строки –secure-heap = n. min & # x3C; number> Минимальное выделение из безопасной кучи, указанное с помощью флага командной строки –secure-heap-min. used & # x3C; number> Общее количество байтов, выделенных в настоящее время из защищенной кучи. utilization & # x3C; number> Расчетное отношение используемых к общему количеству выделенных байтов.

crypto.setEngine (engine [, flags]) #

engine & # x3C; string> flags & # x3C; crypto.constants> По умолчанию: crypto.constants.ENGINE_METHOD_ALL.

Загрузите и установите движок для некоторых или всех функций OpenSSL (выбранных флагами).

Движок может быть либо идентификатором, либо путем к разделяемой библиотеке движка..

Необязательный аргумент flags по умолчанию использует ENGINE_METHOD_ALL. Флаги – это битовое поле, принимающее один из следующих флагов или их комбинацию (определенные в crypto.constants):

crypto.constants.ENGINE_METHOD_RSA crypto.constants.ENGINE_METHOD_DSA crypto.constants.ENGINE_METHOD_DH crypto.constants.ENGINE_METHOD_RAND crypto.constants.ENGINE_METHOD_EC crypto.constants.ENGINE_METHOD_CIPHERS crypto.constants.ENGINE_METHOD_DIGESTS crypto.constants.ENGINE_METHOD_PKEY_METHS crypto.constants.ENGINE_METHOD_PKEY_ASN1_METHS crypto.constants.ENGINE_METHOD_ALL crypto.constants.ENGINE_METHOD_NONE.

Указанные ниже флаги устарели в OpenSSL-1.1.0..

crypto.constants.ENGINE_METHOD_ECDH crypto.constants.ENGINE_METHOD_ECDSA crypto.constants.ENGINE_METHOD_STORE.

crypto.setFips (bool) #

bool & # x3C; boolean> true, чтобы включить режим FIPS.

Включает FIPS-совместимого поставщика криптографии в сборке Node.js с поддержкой FIPS. Выдает ошибку, если режим FIPS недоступен.

crypto.sign (алгоритм, данные, ключ [, обратный вызов]) #

Добавлен необязательный аргумент обратного вызова.

Эта функция теперь поддерживает подписи IEEE-P1363 DSA и ECDSA..

алгоритм & # x3C; строка> | & # x3C; null> | & # x3C; undefined> данные & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> ключ & # x3C; Object> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> callback & # x3C; Function> err & # x3C; Error> подпись & # x3C; Buffer>

Вычисляет и возвращает подпись для данных с использованием заданного закрытого ключа и алгоритма. Если алгоритм равен нулю или не определен, то алгоритм зависит от типа ключа (особенно Ed25519 и Ed448)..

Если ключ не является KeyObject, эта функция ведет себя так, как если бы ключ был передан в crypto.createPrivateKey (). Если это объект, можно передать следующие дополнительные свойства:

dsaEncoding & # x3C; string> Для DSA и ECDSA этот параметр определяет формат сгенерированной подписи. Это может быть одно из следующих значений:

‘der’ (по умолчанию): кодирование структуры подписи ASN.1 в DER-кодировке (r, s). ‘ieee-p1363’: формат подписи r || s, как предлагается в IEEE-P1363.

padding & # x3C; integer> Необязательное значение заполнения для RSA, одно из следующих:

криптографические константы.RSA_PKCS1_PADDING (по умолчанию) криптографические константы.RSA_PKCS1_PSS_PADDING.

RSA_PKCS1_PSS_PADDING будет использовать MGF1 с той же хэш-функцией, которая использовалась для подписи сообщения, как указано в разделе 3.1 RFC 4055..

saltLength & # x3C; integer> Длина соли при заполнении RSA_PKCS1_PSS_PADDING. Специальное значение crypto.constants.RSA_PSS_SALTLEN_DIGEST устанавливает длину соли равной размеру дайджеста, crypto.constants.RSA_PSS_SALTLEN_MAX_SIGN (по умолчанию) устанавливает максимально допустимое значение.

Если предоставляется функция обратного вызова, эта функция использует пул потоков libuv..

crypto.timingSafeEqual (a, b) #

Аргументы a и b также могут быть ArrayBuffer.

a & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> b & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> Возвращает: & # x3C; логическое>

Эта функция основана на алгоритме постоянного времени. Возвращает истину, если a равно b, без утечки информации о времени, которая позволила бы злоумышленнику угадать одно из значений. Это подходит для сравнения дайджестов HMAC или секретных значений, таких как файлы cookie аутентификации или URL-адреса возможностей..

a и b должны быть Buffer s, TypedArray s или DataView s, и они должны иметь одинаковую длину в байтах..

Если хотя бы один из a и b является TypedArray с более чем одним байтом на запись, например Uint16Array, результат будет вычислен с использованием порядка байтов платформы..

Использование crypto.timingSafeEqual не гарантирует, что окружающий код безопасен по времени. Следует позаботиться о том, чтобы окружающий код не привносил временные уязвимости..

crypto.verify (алгоритм, данные, ключ, подпись [, обратный вызов]) #

Добавлен необязательный аргумент обратного вызова.

Аргументы данных, ключа и подписи также могут быть ArrayBuffer..

Эта функция теперь поддерживает подписи IEEE-P1363 DSA и ECDSA..

алгоритм & # x3C; строка> | & # x3C; null> | & # x3C; undefined> данные & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> ключ & # x3C; Object> | & # x3C; строка> | & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; Просмотр данных> | & # x3C; KeyObject> | & # x3C; CryptoKey> подпись & # x3C; ArrayBuffer> | & # x3C; Буфер> | & # x3C; TypedArray> | & # x3C; DataView> callback & # x3C; Function> err & # x3C; Error> result & # x3C; boolean>

Проверяет данную подпись на наличие данных с использованием указанного ключа и алгоритма. Если алгоритм равен нулю или не определен, то алгоритм зависит от типа ключа (особенно Ed25519 и Ed448)..

Если ключ не является KeyObject, эта функция ведет себя так, как если бы ключ был передан в crypto.createPublicKey (). Если это объект, можно передать следующие дополнительные свойства:

dsaEncoding & # x3C; string> Для DSA и ECDSA этот параметр определяет формат подписи. Это может быть одно из следующих значений:

‘der’ (по умолчанию): кодирование структуры подписи ASN.1 в DER-кодировке (r, s). ‘ieee-p1363’: формат подписи r || s, как предлагается в IEEE-P1363.

padding & # x3C; integer> Необязательное значение заполнения для RSA, одно из следующих:

криптографические константы.RSA_PKCS1_PADDING (по умолчанию) криптографические константы.RSA_PKCS1_PSS_PADDING.

RSA_PKCS1_PSS_PADDING будет использовать MGF1 с той же хэш-функцией, которая использовалась для подписи сообщения, как указано в разделе 3.1 RFC 4055..

saltLength & # x3C; integer> Длина соли при заполнении RSA_PKCS1_PSS_PADDING. Специальное значение crypto.constants.RSA_PSS_SALTLEN_DIGEST устанавливает длину соли равной размеру дайджеста, crypto.constants.RSA_PSS_SALTLEN_MAX_SIGN (по умолчанию) устанавливает максимально допустимое значение.

Аргумент подписи – это предварительно рассчитанная подпись для данных. .

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

Если предоставляется функция обратного вызова, эта функция использует пул потоков libuv..

crypto.webcrypto #

Тип: & # x3C; Crypto> Реализация стандарта Web Crypto API..

Заметки #

Использование строк в качестве входных данных для криптографических API #

По историческим причинам многие криптографические API, предоставляемые Node.js, принимают строки в качестве входных данных, где основной криптографический алгоритм работает с последовательностями байтов. Эти экземпляры включают в себя открытые тексты, зашифрованные тексты, симметричные ключи, векторы инициализации, парольные фразы, соли, теги аутентификации и дополнительные аутентифицированные данные..

При передаче строк в криптографические API-интерфейсы учитывайте следующие факторы..

Не все последовательности байтов являются допустимыми строками UTF-8. Следовательно, когда последовательность байтов длины n получается из строки, ее энтропия обычно ниже, чем энтропия случайной или псевдослучайной последовательности n байтов. Например, отсутствие строки UTF-8 не приведет к последовательности байтов c0 af. Секретные ключи должны быть почти исключительно случайными или псевдослучайными последовательностями байтов..

Точно так же при преобразовании случайных или псевдослучайных последовательностей байтов в строки UTF-8 подпоследовательности, которые не представляют действительные кодовые точки, могут быть заменены символом замены Unicode (U + FFFD). Таким образом, байтовое представление результирующей строки Unicode может не совпадать с последовательностью байтов, из которой была создана строка..

Выходные данные шифров, хэш-функций, алгоритмов подписи и функций вывода ключей являются псевдослучайными последовательностями байтов и не должны использоваться в качестве строк Unicode..

Когда строки получаются из пользовательского ввода, некоторые символы Unicode могут быть представлены несколькими эквивалентными способами, что приводит к различным последовательностям байтов. Например, при передаче ключевой фразы в функцию получения ключа, такую ​​как PBKDF2 или scrypt, результат функции получения ключа зависит от того, использует ли строка составные или разложенные символы. Node.js не нормализует представления символов. Разработчикам следует рассмотреть возможность использования String.prototype.normalize () для пользовательских входных данных, прежде чем передавать их в криптографические API..

API устаревших потоков (до Node.js 0.10) #

Модуль Crypto был добавлен в Node.js до появления концепции унифицированного Stream API и до появления объектов Buffer для обработки двоичных данных. Таким образом, многие из крипто-определенных классов имеют методы, которые обычно не встречаются в других классах Node.js, которые реализуют API потоков (например, update (), final () или digest ()). Кроме того, многие методы по умолчанию принимали и возвращали строки в кодировке latin1, а не Buffer s. Это значение по умолчанию было изменено после Node.js v0.8, и теперь вместо него по умолчанию используются объекты буфера..

Последние изменения ECDH #

Упрощено использование ECDH с нединамически генерируемыми парами ключей. Теперь ecdh.setPrivateKey () может быть вызван с предварительно выбранным закрытым ключом, а связанная публичная точка (ключ) будет вычислена и сохранена в объекте. Это позволяет коду хранить и предоставлять только частную часть пары ключей EC. ecdh.setPrivateKey () теперь также проверяет, что закрытый ключ действителен для выбранной кривой.

Метод ecdh.setPublicKey () теперь не рекомендуется, так как его включение в API бесполезно. Либо следует установить ранее сохраненный закрытый ключ, который автоматически генерирует связанный открытый ключ, либо следует вызвать ecdh.generateKeys (). Основным недостатком использования ecdh.setPublicKey () является то, что его можно использовать для перевода пары ключей ECDH в несогласованное состояние..

Поддержка слабых или скомпрометированных алгоритмов #

Модуль шифрования по-прежнему поддерживает некоторые алгоритмы, которые уже взломаны и в настоящее время не рекомендуются для использования. API также позволяет использовать шифры и хэши с небольшим размером ключа, которые слишком слабы для безопасного использования..

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

На основании рекомендаций NIST SP 800-131A:

MD5 и SHA-1 больше не приемлемы там, где требуется устойчивость к коллизиям, например цифровые подписи. Рекомендуется, чтобы ключ, используемый с алгоритмами RSA, DSA и DH, имел не менее 2048 бит, а ключ кривой ECDSA и ECDH – не менее 224 бит, чтобы его можно было безопасно использовать в течение нескольких лет. Группы DH modp1, modp2 и modp5 имеют размер ключа меньше 2048 бит и не рекомендуются..

См. Ссылку для других рекомендаций и деталей..

Режим CCM #

CCM – один из поддерживаемых алгоритмов AEAD. Приложения, использующие этот режим, должны придерживаться определенных ограничений при использовании API шифрования:

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.