crypto
Модуль node:crypto предоставляет криптографические функции, включая набор обёрток для функций хеширования, HMAC, шифрования, расшифрования, подписания и проверки подписей OpenSSL.
const { createHmac } = await import('node:crypto');
const secret = 'abcdefg';
const hash = createHmac('sha256', secret)
.update('I love cupcakes')
.digest('hex');
console.log(hash);
// Prints:
// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e
Использование в Deno
import * as mod from "node:crypto";
класс Certificate
Использование в Deno
import { Certificate } from "node:crypto";
Методы являются неработающими заглушками.
SPKAC — это механизм запроса на подписание сертификата, первоначально реализованный Netscape и формально описанный в составе элемента keygen в HTML5.
<keygen> устарел начиная с версии HTML 5.2, поэтому в новых проектах этот элемент больше не следует использовать.
Модуль node:crypto предоставляет класс Certificate для работы с данными SPKAC. Чаще всего он используется для обработки вывода, сформированного элементом <keygen> HTML5. Node.js использует внутри реализацию SPKAC из OpenSSL.
Методы
exportChallenge(spkac: BinaryLike): Buffer exportPublicKey(
spkac: BinaryLike,
encoding?: string,
): Buffer verifySpkac(spkac: ArrayBufferView): boolean Статические методы
exportChallenge(spkac: BinaryLike): Buffer const { Certificate } = await import('node:crypto');
const spkac = getSpkacSomehow();
const challenge = Certificate.exportChallenge(spkac);
console.log(challenge.toString('utf8'));
// Prints: the challenge as a UTF8 string
exportPublicKey(
spkac: BinaryLike,
encoding?: string,
): Buffer const { Certificate } = await import('node:crypto');
const spkac = getSpkacSomehow();
const publicKey = Certificate.exportPublicKey(spkac);
console.log(publicKey);
// Prints: the public key as <Buffer ...>
verifySpkac(spkac: ArrayBufferView): boolean import { Buffer } from 'node:buffer';
const { Certificate } = await import('node:crypto');
const spkac = getSpkacSomehow();
console.log(Certificate.verifySpkac(Buffer.from(spkac)));
// Prints: true or false
класс Cipher
Использование в Deno
import { Cipher } from "node:crypto";
Экземпляры класса Cipher используются для шифрования данных. Класс можно использовать одним из двух способов:
- Как
stream, доступный и для чтения, и для записи: незашифрованные данные записываются, а на стороне чтения выдаются зашифрованные данные; или - С помощью методов
cipher.update()иcipher.final()для получения зашифрованных данных.
Метод createCipheriv используется для создания экземпляров Cipher. Объекты Cipher не следует создавать напрямую с помощью ключевого слова new.
Пример: использование объектов Cipher в качестве потоков:
const {
scrypt,
randomFill,
createCipheriv,
} = await import('node:crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// First, we'll generate the key. The key length is dependent on the algorithm.
// In this case for aes192, it is 24 bytes (192 bits).
scrypt(password, 'salt', 24, (err, key) => {
if (err) throw err;
// Then, we'll generate a random initialization vector
randomFill(new Uint8Array(16), (err, iv) => {
if (err) throw err;
// Once we have the key and iv, we can create and use the cipher...
const cipher = createCipheriv(algorithm, key, iv);
let encrypted = '';
cipher.setEncoding('hex');
cipher.on('data', (chunk) => encrypted += chunk);
cipher.on('end', () => console.log(encrypted));
cipher.write('some clear text data');
cipher.end();
});
});
Пример: использование Cipher и связанных потоков:
import {
createReadStream,
createWriteStream,
} from 'node:fs';
import {
pipeline,
} from 'node:stream';
const {
scrypt,
randomFill,
createCipheriv,
} = await import('node:crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// First, we'll generate the key. The key length is dependent on the algorithm.
// In this case for aes192, it is 24 bytes (192 bits).
scrypt(password, 'salt', 24, (err, key) => {
if (err) throw err;
// Then, we'll generate a random initialization vector
randomFill(new Uint8Array(16), (err, iv) => {
if (err) throw err;
const cipher = createCipheriv(algorithm, key, iv);
const input = createReadStream('test.js');
const output = createWriteStream('test.enc');
pipeline(input, cipher, output, (err) => {
if (err) throw err;
});
});
});
Пример: использование методов cipher.update() и cipher.final():
const {
scrypt,
randomFill,
createCipheriv,
} = await import('node:crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// First, we'll generate the key. The key length is dependent on the algorithm.
// In this case for aes192, it is 24 bytes (192 bits).
scrypt(password, 'salt', 24, (err, key) => {
if (err) throw err;
// Then, we'll generate a random initialization vector
randomFill(new Uint8Array(16), (err, iv) => {
if (err) throw err;
const cipher = createCipheriv(algorithm, key, iv);
let encrypted = cipher.update('some clear text data', 'utf8', 'hex');
encrypted += cipher.final('hex');
console.log(encrypted);
});
});
Конструкторы
Cipher() Методы
final(): Buffer После вызова метода cipher.final() объект Cipher больше нельзя использовать для шифрования данных. Повторный вызов cipher.final() приведёт к ошибке.
final(outputEncoding: BufferEncoding): string setAutoPadding(autoPadding?: boolean): this При использовании блочных алгоритмов шифрования класс Cipher автоматически добавляет к входным данным дополнение до соответствующего размера блока. Чтобы отключить дополнение по умолчанию, вызовите cipher.setAutoPadding(false).
Если autoPadding имеет значение false, длина всех входных данных должна быть кратна размеру блока шифра, иначе cipher.final() вызовет ошибку. Отключение автоматического дополнения полезно для нестандартного заполнения, например при использовании 0x0 вместо дополнения PKCS.
Метод cipher.setAutoPadding() необходимо вызвать до cipher.final().
update(data: BinaryLike): Buffer Обновляет шифр данными data. Если указан аргумент inputEncoding, аргумент data представляет собой строку в заданной кодировке. Если аргумент inputEncoding не указан, data должен иметь тип Buffer, TypedArray или DataView. Если data имеет тип Buffer, TypedArray или DataView, то inputEncoding игнорируется.
Параметр outputEncoding задаёт формат вывода зашифрованных данных. Если указан outputEncoding, возвращается строка в заданной кодировке. Если outputEncoding не указан, возвращается Buffer.
Метод cipher.update() можно вызывать несколько раз с новыми данными, пока не будет вызван cipher.final(). Вызов cipher.update() после cipher.final() приведёт к ошибке.
класс Decipher
Использование в Deno
import { Decipher } from "node:crypto";
Экземпляры класса Decipher используются для расшифрования данных. Класс можно использовать одним из двух способов:
- Как
stream, доступный и для чтения, и для записи: зашифрованные данные записываются, а на стороне чтения выдаются расшифрованные данные; или - С помощью методов
decipher.update()иdecipher.final()для получения расшифрованных данных.
Метод createDecipheriv используется для создания экземпляров Decipher. Объекты Decipher не следует создавать напрямую с помощью ключевого слова new.
Пример: использование объектов Decipher в качестве потоков:
import { Buffer } from 'node:buffer';
const {
scryptSync,
createDecipheriv,
} = await import('node:crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Key length is dependent on the algorithm. In this case for aes192, it is
// 24 bytes (192 bits).
// Use the async `crypto.scrypt()` instead.
const key = scryptSync(password, 'salt', 24);
// The IV is usually passed along with the ciphertext.
const iv = Buffer.alloc(16, 0); // Initialization vector.
const decipher = createDecipheriv(algorithm, key, iv);
let decrypted = '';
decipher.on('readable', () => {
let chunk;
while (null !== (chunk = decipher.read())) {
decrypted += chunk.toString('utf8');
}
});
decipher.on('end', () => {
console.log(decrypted);
// Prints: some clear text data
});
// Encrypted with same algorithm, key and iv.
const encrypted =
'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa';
decipher.write(encrypted, 'hex');
decipher.end();
Пример: использование Decipher и связанных потоков:
import {
createReadStream,
createWriteStream,
} from 'node:fs';
import { Buffer } from 'node:buffer';
const {
scryptSync,
createDecipheriv,
} = await import('node:crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Use the async `crypto.scrypt()` instead.
const key = scryptSync(password, 'salt', 24);
// The IV is usually passed along with the ciphertext.
const iv = Buffer.alloc(16, 0); // Initialization vector.
const decipher = createDecipheriv(algorithm, key, iv);
const input = createReadStream('test.enc');
const output = createWriteStream('test.js');
input.pipe(decipher).pipe(output);
Пример: использование методов decipher.update() и decipher.final():
import { Buffer } from 'node:buffer';
const {
scryptSync,
createDecipheriv,
} = await import('node:crypto');
const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Use the async `crypto.scrypt()` instead.
const key = scryptSync(password, 'salt', 24);
// The IV is usually passed along with the ciphertext.
const iv = Buffer.alloc(16, 0); // Initialization vector.
const decipher = createDecipheriv(algorithm, key, iv);
// Encrypted using same algorithm, key and iv.
const encrypted =
'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa';
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted);
// Prints: some clear text data
Конструкторы
Decipher() Методы
final(): Buffer После вызова метода decipher.final() объект Decipher больше нельзя использовать для расшифрования данных. Повторный вызов decipher.final() приведёт к ошибке.
final(outputEncoding: BufferEncoding): string setAutoPadding(auto_padding?: boolean): this Если данные были зашифрованы без стандартного блочного дополнения, вызов decipher.setAutoPadding(false) отключит автоматическое дополнение и не позволит decipher.final() проверять наличие дополнения и удалять его.
Отключение автоматического дополнения будет работать, только если длина входных данных кратна размеру блока шифра.
Метод decipher.setAutoPadding() необходимо вызвать до decipher.final().
update(data: ArrayBufferView): Buffer Обновляет средство расшифрования данными data. Если указан аргумент inputEncoding, аргумент data представляет собой строку в заданной кодировке. Если аргумент inputEncoding не указан, data должен иметь тип Buffer. Если data имеет тип Buffer, то inputEncoding игнорируется.
Параметр outputEncoding задаёт формат вывода зашифрованных данных. Если указан outputEncoding, возвращается строка в заданной кодировке. Если outputEncoding не указан, возвращается Buffer.
Метод decipher.update() можно вызывать несколько раз с новыми данными, пока не будет вызван decipher.final(). Вызов decipher.update() после decipher.final() приведёт к ошибке.
класс DiffieHellman
Использование в Deno
import { DiffieHellman } from "node:crypto";
Класс DiffieHellman предназначен для создания обмена ключами по алгоритму Диффи — Хеллмана.
Экземпляры класса DiffieHellman можно создать с помощью функции createDiffieHellman.
import assert from 'node:assert';
const {
createDiffieHellman,
} = await import('node:crypto');
// Generate Alice's keys...
const alice = createDiffieHellman(2048);
const aliceKey = alice.generateKeys();
// Generate Bob's keys...
const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator());
const bobKey = bob.generateKeys();
// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);
// OK
assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
Конструкторы
DiffieHellman() Свойства
verifyError: number Битовая маска, содержащая предупреждения и/или ошибки, возникшие при проверке во время инициализации объекта DiffieHellman.
Для этого свойства допустимы следующие значения (определённые в модуле node:constants):
DH_CHECK_P_NOT_SAFE_PRIMEDH_CHECK_P_NOT_PRIMEDH_UNABLE_TO_CHECK_GENERATORDH_NOT_SUITABLE_GENERATOR
Методы
computeSecret(
otherPublicKey: ArrayBufferView,
inputEncoding?: null,
outputEncoding?: null,
): Buffer Вычисляет общий секрет, используя otherPublicKey в качестве открытого ключа другой стороны, и возвращает вычисленный общий секрет. Переданный ключ интерпретируется с использованием указанной inputEncoding, а секрет кодируется с использованием указанной outputEncoding. Если inputEncoding не задан, ожидается, что otherPublicKey имеет тип Buffer, TypedArray или DataView.
Если задан outputEncoding, возвращается строка; в противном случае возвращается Buffer.
computeSecret(): Buffer computeSecret(): string computeSecret(): string generateKeys(): Buffer Генерирует закрытый и открытый ключи Диффи — Хеллмана, если они ещё не были сгенерированы или вычислены, и возвращает открытый ключ в указанном формате encoding. Этот ключ следует передать другой стороне. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.
Эта функция представляет собой тонкую обёртку над DH_generate_key(). В частности, если закрытый ключ уже сгенерирован или задан, вызов этой функции обновляет только открытый ключ, но не генерирует новый закрытый ключ.
generateKeys(encoding: BinaryToTextEncoding): string getGenerator(): Buffer Возвращает генератор Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.
getGenerator(encoding: BinaryToTextEncoding): string getPrime(): Buffer Возвращает простое число Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.
getPrime(encoding: BinaryToTextEncoding): string getPrivateKey(): Buffer Возвращает закрытый ключ Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.
getPrivateKey(encoding: BinaryToTextEncoding): string getPublicKey(): Buffer Возвращает открытый ключ Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.
getPublicKey(encoding: BinaryToTextEncoding): string setPrivateKey(privateKey: ArrayBufferView): void Задаёт закрытый ключ Диффи — Хеллмана. Если указан аргумент encoding, ожидается, что privateKey будет строкой. Если encoding не задан, ожидается, что privateKey имеет тип Buffer, TypedArray или DataView.
Эта функция не вычисляет автоматически соответствующий открытый ключ. Для ручного задания или автоматического вычисления открытого ключа можно использовать diffieHellman.setPublicKey() или diffieHellman.generateKeys().
setPrivateKey(
privateKey: string,
encoding: BufferEncoding,
): void setPublicKey(publicKey: ArrayBufferView): void Задаёт открытый ключ Диффи — Хеллмана. Если указан аргумент encoding, ожидается, что publicKey будет строкой. Если encoding не задан, ожидается, что publicKey имеет тип Buffer, TypedArray или DataView.
setPublicKey(
publicKey: string,
encoding: BufferEncoding,
): void класс ECDH
Использование в Deno
import { ECDH } from "node:crypto";
Метод convertKey — неработающая заглушка.
Класс ECDH предназначен для создания обмена ключами по протоколу Диффи — Хеллмана на эллиптических кривых (ECDH).
Экземпляры класса ECDH можно создать с помощью функции createECDH.
import assert from 'node:assert';
const {
createECDH,
} = await import('node:crypto');
// Generate Alice's keys...
const alice = createECDH('secp521r1');
const aliceKey = alice.generateKeys();
// Generate Bob's keys...
const bob = createECDH('secp521r1');
const bobKey = bob.generateKeys();
// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);
assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
// OK
Конструкторы
ECDH() Методы
computeSecret(otherPublicKey: ArrayBufferView): Buffer Вычисляет общий секрет, используя otherPublicKey в качестве открытого ключа другой стороны, и возвращает вычисленный общий секрет. Переданный ключ интерпретируется с использованием указанного inputEncoding, а возвращаемый секрет кодируется с использованием указанного outputEncoding. Если inputEncoding не задан, предполагается, что otherPublicKey имеет тип Buffer, TypedArray или DataView.
Если задан outputEncoding, будет возвращена строка; в противном случае возвращается Buffer.
ecdh.computeSecret выбрасывает ошибку ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY, если otherPublicKey находится за пределами эллиптической кривой. Поскольку otherPublicKey обычно передаётся удалённым пользователем по небезопасной сети, обязательно предусмотрите соответствующую обработку этого исключения.
computeSecret(
otherPublicKey: string,
inputEncoding: BinaryToTextEncoding,
): Buffer computeSecret(
otherPublicKey: ArrayBufferView,
outputEncoding: BinaryToTextEncoding,
): string computeSecret(): string generateKeys(): Buffer Создаёт значения закрытого и открытого ключей для протокола Диффи — Хеллмана на эллиптических кривых и возвращает открытый ключ в указанном формате format и encoding. Этот ключ следует передать другой стороне.
Аргумент format задаёт кодирование точки и может иметь значение 'compressed' или 'uncompressed'. Если format не задан, точка будет возвращена в формате 'uncompressed'.
Если задан encoding, возвращается строка; в противном случае возвращается Buffer.
generateKeys(
encoding: BinaryToTextEncoding,
format?: ECDHKeyFormat,
): string getPrivateKey(): Buffer Если задан encoding, возвращается строка; в противном случае возвращается Buffer.
getPrivateKey(encoding: BinaryToTextEncoding): string getPublicKey(
encoding?: null,
format?: ECDHKeyFormat,
): Buffer Аргумент format задаёт кодирование точки и может иметь значение 'compressed' или 'uncompressed'. Если format не задан, точка будет возвращена в формате 'uncompressed'.
Если задан encoding, возвращается строка; в противном случае возвращается Buffer.
getPublicKey(
encoding: BinaryToTextEncoding,
format?: ECDHKeyFormat,
): string setPrivateKey(privateKey: ArrayBufferView): void Задаёт закрытый ключ для протокола Диффи — Хеллмана на эллиптических кривых. Если задан encoding, предполагается, что privateKey имеет строковый тип; в противном случае предполагается, что privateKey имеет тип Buffer, TypedArray или DataView.
Если privateKey недопустим для кривой, указанной при создании объекта ECDH, выбрасывается ошибка. После установки закрытого ключа связанная с ним открытая точка (ключ) также создаётся и устанавливается в объекте ECDH.
setPrivateKey(
privateKey: string,
encoding: BinaryToTextEncoding,
): void Статические методы
convertKey(
key: BinaryLike,
curve: string,
inputEncoding?: BinaryToTextEncoding,
outputEncoding?:
"latin1"
| "hex"
| "base64"
| "base64url"
,
format?:
"uncompressed"
| "compressed"
| "hybrid"
,
): Buffer | string Преобразует открытый ключ для протокола Диффи — Хеллмана на эллиптических кривых, заданный параметрами key и curve, в формат, указанный в format. Аргумент format задаёт кодирование точки и может иметь значение 'compressed', 'uncompressed' или 'hybrid'. Переданный ключ интерпретируется с использованием указанного inputEncoding, а возвращаемый ключ кодируется с использованием указанного outputEncoding.
Используйте getCurves, чтобы получить список доступных имён кривых. В последних версиях OpenSSL команда openssl ecparam -list_curves также выводит имя и описание каждой доступной эллиптической кривой.
Если format не задан, точка будет возвращена в формате 'uncompressed'.
Если inputEncoding не задан, предполагается, что key имеет тип Buffer, TypedArray или DataView.
Пример (снятие сжатия с ключа):
const {
createECDH,
ECDH,
} = await import('node:crypto');
const ecdh = createECDH('secp256k1');
ecdh.generateKeys();
const compressedKey = ecdh.getPublicKey('hex', 'compressed');
const uncompressedKey = ECDH.convertKey(compressedKey,
'secp256k1',
'hex',
'hex',
'uncompressed');
// The converted key and the uncompressed public key should be the same
console.log(uncompressedKey === ecdh.getPublicKey('hex'));
класс Hash
Использование в Deno
import { Hash } from "node:crypto";
Класс Hash предназначен для вычисления хеш-дайджестов данных. Его можно использовать одним из двух способов:
- Как
streamс возможностью чтения и записи: данные записываются, чтобы на стороне чтения получить вычисленный хеш-дайджест, либо - С помощью методов
hash.update()иhash.digest()для вычисления хеша.
Для создания экземпляров Hash используется метод createHash. Объекты Hash нельзя создавать напрямую с помощью ключевого слова new.
Пример: использование объектов Hash в качестве потоков:
const {
createHash,
} = await import('node:crypto');
const hash = createHash('sha256');
hash.on('readable', () => {
// Only one element is going to be produced by the
// hash stream.
const data = hash.read();
if (data) {
console.log(data.toString('hex'));
// Prints:
// 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
}
});
hash.write('some data to hash');
hash.end();
Пример: использование методов Hash и потоков с передачей данных:
import { createReadStream } from 'node:fs';
import { stdout } from 'node:process';
const { createHash } = await import('node:crypto');
const hash = createHash('sha256');
const input = createReadStream('test.js');
input.pipe(hash).setEncoding('hex').pipe(stdout);
Пример: использование методов hash.update() и hash.digest():
const {
createHash,
} = await import('node:crypto');
const hash = createHash('sha256');
hash.update('some data to hash');
console.log(hash.digest('hex'));
// Prints:
// 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
Конструкторы
Hash() Методы
copy(options?: HashOptions): Hash Создаёт новый объект Hash, содержащий глубокую копию внутреннего состояния текущего объекта Hash.
Необязательный аргумент options управляет поведением потока. Для хеш-функций XOF, таких как 'shake256', параметр outputLength можно использовать для указания требуемой длины выходных данных в байтах.
При попытке скопировать объект Hash после вызова его метода hash.digest() выбрасывается ошибка.
// Calculate a rolling hash.
const {
createHash,
} = await import('node:crypto');
const hash = createHash('sha256');
hash.update('one');
console.log(hash.copy().digest('hex'));
hash.update('two');
console.log(hash.copy().digest('hex'));
hash.update('three');
console.log(hash.copy().digest('hex'));
// Etc.
digest(): Buffer Вычисляет дайджест всех переданных для хеширования данных (с помощью метода hash.update()). Если задан encoding, будет возвращена строка; в противном случае возвращается Buffer.
После вызова метода hash.digest() объект Hash больше нельзя использовать. Повторный вызов приведёт к ошибке.
digest(encoding: BinaryToTextEncoding): string update(data: BinaryLike): Hash Обновляет хешируемое содержимое указанными данными data, кодировка которых задаётся параметром inputEncoding. Если encoding не задан, а data — строка, применяется кодировка 'utf8'. Если data имеет тип Buffer, TypedArray или DataView, параметр inputEncoding игнорируется.
Этот метод можно вызывать многократно, добавляя новые данные по мере их поступления в потоке.
класс KeyObject
Использование в Deno
import { KeyObject } from "node:crypto";
Следующие элементы представлены неработающими заглушками:
- from
- symmetricKeySize
- equals
Node.js использует класс KeyObject для представления симметричного или асимметричного ключа; для ключей каждого типа доступны разные функции. Методы createSecretKey, createPublicKey и createPrivateKey используются для создания экземпляров KeyObject. Объекты KeyObject нельзя создавать напрямую с помощью ключевого слова new.
Большинству приложений следует использовать новый API KeyObject вместо передачи ключей в виде строк или Buffer из-за повышенного уровня безопасности.
Экземпляры KeyObject можно передавать в другие потоки выполнения с помощью postMessage(). Получатель получает клонированный объект KeyObject, а KeyObject не нужно указывать в аргументе transferList.
Конструкторы
KeyObject() Свойства
asymmetricKeyDetails: AsymmetricKeyDetails | undefined Это свойство существует только для асимметричных ключей. В зависимости от типа ключа этот объект содержит сведения о нём. Ни одна из сведений, полученных с помощью этого свойства, не может использоваться для однозначной идентификации ключа или нарушения его безопасности.
Для ключей RSA-PSS, если материал ключа содержит последовательность RSASSA-PSS-params, будут заданы свойства hashAlgorithm, mgf1HashAlgorithm и saltLength.
Это API может предоставлять дополнительные сведения о ключе через другие атрибуты.
asymmetricKeyType: KeyType | undefined Для асимметричных ключей это свойство определяет тип ключа. Поддерживаются следующие типы ключей:
-
'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 и симметричных ключей это свойство имеет значение undefined.
symmetricKeySize: number | undefined Для секретных ключей это свойство определяет размер ключа в байтах. Для асимметричных ключей это свойство имеет значение undefined.
В зависимости от типа объекта KeyObject это свойство имеет значение 'secret' для секретных (симметричных) ключей, 'public' для открытых (асимметричных) ключей или 'private' для закрытых (асимметричных) ключей.
Методы
Возвращает true или false в зависимости от того, совпадают ли тип, значение и параметры ключей. Этот метод не работает за постоянное время.
export(options: KeyExportOptions<"pem">): string | Buffer Для симметричных ключей доступны следующие варианты кодирования:
Для открытых ключей доступны следующие варианты кодирования:
Для закрытых ключей доступны следующие варианты кодирования:
Тип результата зависит от выбранного формата кодирования: для PEM результатом будет строка, для DER — буфер с данными в формате DER, а для JWK — объект.
Если выбран формат кодирования JWK, все остальные параметры кодирования игнорируются.
Ключи типов PKCS#1, SEC1 и PKCS#8 можно зашифровать, используя сочетание параметров cipher и format. Параметр type для PKCS#8 можно использовать с любым format, чтобы зашифровать ключ любого алгоритма (RSA, EC или DH), указав cipher. Ключи PKCS#1 и SEC1 можно зашифровать, указав cipher, только при использовании формата PEM format. Для максимальной совместимости используйте PKCS#8 для зашифрованных закрытых ключей. Поскольку PKCS#8 определяет собственный механизм шифрования, при шифровании ключа PKCS#8 шифрование на уровне PEM не поддерживается. Сведения о шифровании PKCS#8 см. в RFC 5208, а о шифровании PKCS#1 и SEC1 — в RFC 1421.
export(options?: KeyExportOptions<"der">): Buffer export(options?: JwkKeyExportOptions): JsonWebKey toCryptoKey(): webcrypto.CryptoKey Преобразует экземпляр KeyObject в CryptoKey.
Статические методы
from(key: webcrypto.CryptoKey): KeyObject Пример: преобразование экземпляра CryptoKey в KeyObject:
const { KeyObject } = await import('node:crypto');
const { subtle } = globalThis.crypto;
const key = await subtle.generateKey({
name: 'HMAC',
hash: 'SHA-256',
length: 256,
}, true, ['sign', 'verify']);
const keyObject = KeyObject.from(key);
console.log(keyObject.symmetricKeySize);
// Prints: 32 (symmetric key size in bytes)
класс Sign
Использование в Deno
import { Sign } from "node:crypto";
Методы sign и verify не поддерживают входные данные, не относящиеся к BinaryLike.
Класс Sign предназначен для создания цифровых подписей. Его можно использовать одним из двух способов:
- Как записываемый
stream: данные для подписания записываются в поток, а методsign.sign()используется для создания и возврата подписи, либо - С помощью методов
sign.update()иsign.sign()для создания подписи.
Для создания экземпляров Sign используется метод createSign. В качестве аргумента передаётся строковое имя используемой хеш-функции. Объекты Sign нельзя создавать напрямую с помощью ключевого слова new.
Пример: использование объектов Sign и Verify в качестве потоков:
const {
generateKeyPairSync,
createSign,
createVerify,
} = await import('node:crypto');
const { privateKey, publicKey } = generateKeyPairSync('ec', {
namedCurve: 'sect239k1',
});
const sign = createSign('SHA256');
sign.write('some data to sign');
sign.end();
const signature = sign.sign(privateKey, 'hex');
const verify = createVerify('SHA256');
verify.write('some data to sign');
verify.end();
console.log(verify.verify(publicKey, signature, 'hex'));
// Prints: true
Пример: использование методов sign.update() и verify.update():
const {
generateKeyPairSync,
createSign,
createVerify,
} = await import('node:crypto');
const { privateKey, publicKey } = generateKeyPairSync('rsa', {
modulusLength: 2048,
});
const sign = createSign('SHA256');
sign.update('some data to sign');
sign.end();
const signature = sign.sign(privateKey);
const verify = createVerify('SHA256');
verify.update('some data to sign');
verify.end();
console.log(verify.verify(publicKey, signature));
// Prints: true
Конструкторы
Sign() Методы
sign(privateKey: ): Buffer Вычисляет подпись для всех переданных данных, используя sign.update() или sign.write().
Если privateKey не является KeyObject, функция работает так, как если бы в createPrivateKey был передан privateKey. Если это объект, можно передать следующие дополнительные свойства:
Если задан outputEncoding, возвращается строка; в противном случае возвращается Buffer.
После вызова метода sign.sign() объект Sign больше нельзя использовать. Повторный вызов sign.sign() приведёт к ошибке.
sign(
privateKey: ,
outputFormat: BinaryToTextEncoding,
): string update(data: BinaryLike): this Обновляет содержимое Sign указанными данными data, кодировка которых задаётся параметром inputEncoding. Если encoding не задан, а data — строка, применяется кодировка 'utf8'. Если data имеет тип Buffer, TypedArray или DataView, параметр inputEncoding игнорируется.
Этот метод можно вызывать многократно, добавляя новые данные по мере их поступления в потоке.
класс Verify
Использование в Deno
import { Verify } from "node:crypto";
Класс Verify предназначен для проверки цифровых подписей. Его можно использовать одним из двух способов:
- Как записываемый
stream, в который записываются данные для проверки соответствия переданной подписи, либо - С помощью методов
verify.update()иverify.verify()для проверки подписи.
Для создания экземпляров Verify используется метод createVerify. Объекты Verify нельзя создавать напрямую с помощью ключевого слова new.
Примеры см. в разделе Sign.
Конструкторы
Verify() Методы
update(data: BinaryLike): Verify Обновляет содержимое Verify указанными данными data, кодировка которых задаётся параметром inputEncoding. Если inputEncoding не задан, а data — строка, применяется кодировка 'utf8'. Если data имеет тип Buffer, TypedArray или DataView, параметр inputEncoding игнорируется.
Этот метод можно вызывать многократно, добавляя новые данные по мере их поступления в потоке.
verify(
object: ,
signature: ArrayBufferView,
): boolean Проверяет переданные данные с использованием указанного object и signature.
Если object не является KeyObject, функция работает так, как если бы в createPublicKey был передан object. Если это объект, можно передать следующие дополнительные свойства:
Аргумент signature — это ранее вычисленная подпись данных в формате signatureEncoding. Если задан signatureEncoding, предполагается, что signature имеет строковый тип; в противном случае предполагается, что signature имеет тип Buffer, TypedArray или DataView.
После вызова verify.verify() объект verify больше нельзя использовать. Повторный вызов verify.verify() приведёт к ошибке.
Поскольку открытые ключи можно получить из закрытых, вместо открытого ключа можно передать закрытый.
verify(): boolean класс X509Certificate
Использование в Deno
import { X509Certificate } from "node:crypto";
Инкапсулирует сертификат X509 и предоставляет доступ только для чтения к содержащейся в нем информации.
const { X509Certificate } = await import('node:crypto');
const x509 = new X509Certificate('{... pem encoded cert ...}');
console.log(x509.subject);
Конструкторы
X509Certificate(buffer: BinaryLike) Свойства
ca: boolean Имеет значение `true`, если это сертификат удостоверяющего центра (CA).
fingerprint: string Отпечаток этого сертификата SHA-1.
Поскольку SHA-1 криптографически взломан, а его безопасность значительно ниже безопасности алгоритмов, обычно используемых для подписания сертификатов, рассмотрите возможность использования x509.fingerprint256.
fingerprint256: string Отпечаток этого сертификата SHA-256.
fingerprint512: string Отпечаток этого сертификата SHA-512.
Поскольку вычисление отпечатка SHA-256 обычно выполняется быстрее, а его размер вдвое меньше размера отпечатка SHA-512, x509.fingerprint256 может быть предпочтительнее. Хотя SHA-512, предположительно, обеспечивает более высокий уровень безопасности в целом, безопасность SHA-256 соответствует безопасности большинства алгоритмов, обычно используемых для подписания сертификатов.
infoAccess: string | undefined Текстовое представление расширения сертификата для доступа к информации об удостоверяющем центре.
Это список описаний доступа, разделенных символами перевода строки. Каждая строка начинается с метода доступа и типа местоположения доступа, за которыми следуют двоеточие и значение, связанное с местоположением доступа.
После префикса, обозначающего метод доступа и тип местоположения доступа, оставшаяся часть каждой строки может быть заключена в кавычки, указывающие на то, что значение представляет собой строковый литерал JSON. Для обратной совместимости Node.js использует строковые литералы JSON в этом свойстве только тогда, когда это необходимо для устранения неоднозначности. Сторонний код должен быть готов обрабатывать оба возможных формата записей.
issuer: string Идентификатор издателя, включенный в этот сертификат.
issuerCertificate: X509Certificate | undefined Сертификат издателя или undefined, если сертификат издателя недоступен.
keyUsage: string[] Массив с подробными сведениями о назначении ключа для этого сертификата.
raw: Buffer Buffer с DER-кодировкой этого сертификата.
serialNumber: string Серийный номер этого сертификата.
Серийные номера присваиваются удостоверяющими центрами и не являются уникальными идентификаторами сертификатов. В качестве уникального идентификатора рассмотрите возможность использования x509.fingerprint256.
subject: string Полное имя субъекта этого сертификата.
subjectAltName: string | undefined Альтернативное имя субъекта, указанное для этого сертификата.
Это разделенный запятыми список альтернативных имен субъекта. Каждая запись начинается со строки, обозначающей тип альтернативного имени субъекта, за которой следуют двоеточие и значение, связанное с записью.
В более ранних версиях Node.js ошибочно предполагалось, что это свойство можно безопасно разделить по двухсимвольной последовательности ', ' (см. CVE-2021-44532). Однако как вредоносные, так и легитимные сертификаты могут содержать альтернативные имена субъекта с этой последовательностью в строковом представлении.
После префикса, обозначающего тип записи, оставшаяся часть каждой записи может быть заключена в кавычки, указывающие на то, что значение представляет собой строковый литерал JSON. Для обратной совместимости Node.js использует строковые литералы JSON в этом свойстве только тогда, когда это необходимо для устранения неоднозначности. Сторонний код должен быть готов обрабатывать оба возможных формата записей.
validFrom: string Дата и время, начиная с которых этот сертификат считается действительным.
validFromDate: Date Дата и время, начиная с которых этот сертификат действителен, инкапсулированные в объект Date.
validTo: string Дата и время, до которых этот сертификат считается действительным.
validToDate: Date Дата и время, до которых этот сертификат действителен, инкапсулированные в объект Date.
Методы
checkEmail(
email: string,
options?: Pick<X509CheckOptions, "subject">,
): string | undefined Проверяет, соответствует ли сертификат указанному адресу электронной почты.
Если параметр 'subject' не задан или имеет значение 'default', субъект сертификата учитывается только в том случае, если расширение альтернативных имен субъекта отсутствует или не содержит адресов электронной почты.
Если параметру 'subject' присвоено значение 'always' и расширение альтернативных имен субъекта отсутствует или не содержит соответствующий адрес электронной почты, учитывается субъект сертификата.
Если параметру 'subject' присвоено значение 'never', субъект сертификата не учитывается никогда, даже если сертификат не содержит альтернативных имен субъекта.
checkHost(
name: string,
options?: X509CheckOptions,
): string | undefined Проверяет, соответствует ли сертификат указанному имени хоста.
Если сертификат соответствует указанному имени хоста, возвращается совпадающее имя субъекта. Возвращаемое имя может точно совпадать (например, foo.example.com) или содержать подстановочные символы (например, *.example.com). Поскольку сравнение имен хостов не учитывает регистр, возвращаемое имя субъекта может также отличаться от указанного name регистром букв.
Если параметр 'subject' не задан или имеет значение 'default', субъект сертификата учитывается только в том случае, если расширение альтернативных имен субъекта отсутствует или не содержит имен DNS. Это поведение соответствует RFC 2818 («HTTP поверх TLS»).
Если параметру 'subject' присвоено значение 'always' и расширение альтернативных имен субъекта отсутствует или не содержит соответствующего имени DNS, учитывается субъект сертификата.
Если параметру 'subject' присвоено значение 'never', субъект сертификата не учитывается никогда, даже если сертификат не содержит альтернативных имен субъекта.
checkIP(ip: string): string | undefined Проверяет, соответствует ли сертификат указанному IP-адресу (IPv4 или IPv6).
Учитываются только альтернативные имена субъекта iPAddress по RFC 5280, которые должны точно совпадать с указанным ip адресом. Остальные альтернативные имена субъекта, а также поле субъекта сертификата игнорируются.
checkIssued(otherCert: X509Certificate): boolean Проверяет, был ли этот сертификат выдан указанным otherCert.
checkPrivateKey(privateKey: KeyObject): boolean Проверяет, соответствует ли открытый ключ этого сертификата указанному закрытому ключу.
toJSON(): string Стандартного способа кодирования сертификатов X509 в JSON не существует. Метод toJSON() возвращает строку, содержащую сертификат в кодировке PEM.
Возвращает сведения об этом сертификате в устаревшей кодировке certificate object.
toString(): string Возвращает сертификат в кодировке PEM.
класс Hmac
Использование в Deno
import { Hmac } from "node:crypto";
Начиная с версии v20.13.0 прямой вызов класса Hmac с Hmac() или new Hmac() считается устаревшим, поскольку это внутренние компоненты, не предназначенные для публичного использования. Для создания экземпляров Hmac используйте метод createHmac.
Класс Hmac предназначен для создания криптографических дайджестов HMAC. Его можно использовать одним из двух способов:
- Как
stream, одновременно доступный для чтения и записи: данные записываются для вычисления дайджеста HMAC, который можно прочитать, или - С помощью методов
hmac.update()иhmac.digest()для вычисления дайджеста HMAC.
Для создания экземпляров Hmac используется метод createHmac. Экземпляры Hmac нельзя создавать напрямую с помощью ключевого слова new.
Пример: использование объектов Hmac в качестве потоков:
const {
createHmac,
} = await import('node:crypto');
const hmac = createHmac('sha256', 'a secret');
hmac.on('readable', () => {
// Only one element is going to be produced by the
// hash stream.
const data = hmac.read();
if (data) {
console.log(data.toString('hex'));
// Prints:
// 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e
}
});
hmac.write('some data to hash');
hmac.end();
Пример: использование Hmac и потоков с передачей данных:
import { createReadStream } from 'node:fs';
import { stdout } from 'node:process';
const {
createHmac,
} = await import('node:crypto');
const hmac = createHmac('sha256', 'a secret');
const input = createReadStream('test.js');
input.pipe(hmac).pipe(stdout);
Пример: использование методов hmac.update() и hmac.digest():
const {
createHmac,
} = await import('node:crypto');
const hmac = createHmac('sha256', 'a secret');
hmac.update('some data to hash');
console.log(hmac.digest('hex'));
// Prints:
// 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e
Конструкторы
Hmac() Методы
digest(): Buffer Вычисляет дайджест HMAC для всех данных, переданных с помощью hmac.update(). Если указан encoding, возвращается строка; в противном случае возвращается Buffer;
После вызова hmac.digest() объект Hmac больше нельзя использовать. Повторные вызовы hmac.digest() приведут к ошибке.
digest(encoding: BinaryToTextEncoding): string update(data: BinaryLike): Hmac Обновляет содержимое Hmac указанным значением data, кодировка которого задается в inputEncoding. Если encoding не указан, а data является строкой, принудительно используется кодировка 'utf8'. Если data является Buffer, TypedArray или DataView, то inputEncoding игнорируется.
Этот метод можно вызывать многократно по мере поступления новых данных в потоке.
функция checkPrime
Использование в Deno
import { checkPrime } from "node:crypto";
Перегрузка 1
checkPrime(
value: LargeNumberLike,
callback: (
err: Error | null,
result: boolean,
) => void,
): voidПроверяет, является ли candidate простым числом.
Параметры
value: LargeNumberLike callback: (
err: Error | null,
result: boolean,
) => void Возвращаемый тип
void Перегрузка 2
checkPrime(
value: LargeNumberLike,
options: CheckPrimeOptions,
callback: (
err: Error | null,
result: boolean,
) => void,
): voidПараметры
value: LargeNumberLike options: CheckPrimeOptions callback: (
err: Error | null,
result: boolean,
) => void Возвращаемый тип
void функция checkPrimeSync
Использование в Deno
import { checkPrimeSync } from "node:crypto";
checkPrimeSync(
candidate: LargeNumberLike,
options?: CheckPrimeOptions,
): booleanПроверяет, является ли candidate простым числом.
Параметры
candidate: LargeNumberLike Возможное простое число, закодированное как последовательность октетов произвольной длины в порядке от старшего байта к младшему.
options: CheckPrimeOptions Возвращаемый тип
boolean true, если кандидат является простым числом с вероятностью ошибки менее 0.25 ** options.checks.
функция createCipheriv
Использование в Deno
import { createCipheriv } from "node:crypto";
Вариант 1
createCipheriv(): CipherCCMСоздаёт и возвращает объект Cipher с заданными algorithm, key и вектором инициализации (iv).
Аргумент options управляет поведением потока и является необязательным, за исключением случаев, когда используется шифр в режиме CCM или OCB (например, 'aes-128-ccm'). В этом случае требуется параметр authTagLength, задающий длину тега аутентификации в байтах; см. CCM mode. В режиме GCM параметр authTagLength не является обязательным, но с его помощью можно задать длину тега аутентификации, возвращаемого методом getAuthTag(); по умолчанию она составляет 16 байт. Для chacha20-poly1305 значение параметра authTagLength по умолчанию составляет 16 байт.
Набор algorithm зависит от OpenSSL; примеры: 'aes192' и т. д. В последних версиях OpenSSL команда openssl list -cipher-algorithms выводит список доступных алгоритмов шифрования.
Параметр key — это необработанный ключ, используемый методом algorithm, а iv — это вектор инициализации. Оба аргумента должны быть строками в кодировке 'utf8', объектами Buffers, TypedArray или DataView. Параметр key также может быть KeyObject типа secret. Если шифру не требуется вектор инициализации, значение iv может быть равно null.
При передаче строк для key или iv рекомендуется учесть caveats when using strings as inputs to cryptographic APIs.
Векторы инициализации должны быть непредсказуемыми и уникальными; в идеале они должны быть криптографически случайными. Они не обязаны быть секретными: обычно IV просто добавляются к зашифрованным сообщениям в открытом виде. Может показаться противоречивым, что значение должно быть непредсказуемым и уникальным, но при этом не обязано быть секретным; помните, что злоумышленник не должен иметь возможности заранее предсказать значение конкретного IV.
Параметры
algorithm: CipherCCMTypes key: CipherKey iv: BinaryLike options: CipherCCMOptions параметры stream.transform
Тип возвращаемого значения
Вариант 2
createCipheriv(): CipherOCBПараметры
Тип возвращаемого значения
Вариант 3
createCipheriv(): CipherGCMПараметры
Тип возвращаемого значения
Вариант 4
createCipheriv(
algorithm: CipherChaCha20Poly1305Types,
key: CipherKey,
iv: BinaryLike,
options?: CipherChaCha20Poly1305Options,
): CipherChaCha20Poly1305Параметры
algorithm: CipherChaCha20Poly1305Types key: CipherKey iv: BinaryLike options: CipherChaCha20Poly1305Options Тип возвращаемого значения
Вариант 5
createCipheriv(): CipherПараметры
algorithm: string key: CipherKey iv: BinaryLike | null options: stream.TransformOptions Тип возвращаемого значения
функция createDecipheriv
Использование в Deno
import { createDecipheriv } from "node:crypto";
Вариант 1
createDecipheriv(): DecipherCCMСоздаёт и возвращает объект Decipher, использующий заданные algorithm, key и вектор инициализации (iv).
Аргумент options управляет поведением потока и является необязательным, за исключением случаев, когда используется шифр в режиме CCM или OCB (например, 'aes-128-ccm'). В этом случае требуется параметр authTagLength, задающий длину тега аутентификации в байтах; см. CCM mode. В режиме GCM параметр authTagLength не является обязательным, но с его помощью можно ограничить допустимые теги аутентификации, указав их длину. Для chacha20-poly1305 значение параметра authTagLength по умолчанию составляет 16 байт.
Набор algorithm зависит от OpenSSL; примеры: 'aes192' и т. д. В последних версиях OpenSSL команда openssl list -cipher-algorithms выводит список доступных алгоритмов шифрования.
Параметр key — это необработанный ключ, используемый методом algorithm, а iv — это вектор инициализации. Оба аргумента должны быть строками в кодировке 'utf8', объектами Buffers, TypedArray или DataView. Параметр key также может быть KeyObject типа secret. Если шифру не требуется вектор инициализации, значение iv может быть равно null.
При передаче строк для key или iv рекомендуется учесть caveats when using strings as inputs to cryptographic APIs.
Векторы инициализации должны быть непредсказуемыми и уникальными; в идеале они должны быть криптографически случайными. Они не обязаны быть секретными: обычно IV просто добавляются к зашифрованным сообщениям в открытом виде. Может показаться противоречивым, что значение должно быть непредсказуемым и уникальным, но при этом не обязано быть секретным; помните, что злоумышленник не должен иметь возможности заранее предсказать значение конкретного IV.
Параметры
algorithm: CipherCCMTypes key: CipherKey iv: BinaryLike options: CipherCCMOptions параметры stream.transform
Тип возвращаемого значения
Вариант 2
createDecipheriv(): DecipherOCBПараметры
Тип возвращаемого значения
Вариант 3
createDecipheriv(): DecipherGCMПараметры
Тип возвращаемого значения
Вариант 4
createDecipheriv(
algorithm: CipherChaCha20Poly1305Types,
key: CipherKey,
iv: BinaryLike,
options?: CipherChaCha20Poly1305Options,
): DecipherChaCha20Poly1305Параметры
algorithm: CipherChaCha20Poly1305Types key: CipherKey iv: BinaryLike options: CipherChaCha20Poly1305Options Тип возвращаемого значения
Вариант 5
createDecipheriv(): DecipherПараметры
algorithm: string key: CipherKey iv: BinaryLike | null options: stream.TransformOptions Тип возвращаемого значения
функция createDiffieHellman
Использование в Deno
import { createDiffieHellman } from "node:crypto";
Вариант 1
createDiffieHellman(
primeLength: number,
generator?: number,
): DiffieHellmanСоздаёт объект обмена ключами DiffieHellman, используя переданное значение prime и необязательное конкретное значение generator.
Аргумент generator может быть числом, строкой или Buffer. Если generator не задан, используется значение 2.
Если задано primeEncoding, ожидается, что prime будет строкой; в противном случае ожидается Buffer, TypedArray или DataView.
Если задано generatorEncoding, ожидается, что generator будет строкой; в противном случае ожидается число, Buffer, TypedArray или DataView.
Параметры
primeLength: number generator: number = 2 Тип возвращаемого значения
Вариант 2
createDiffieHellman(
prime: ArrayBuffer | ArrayBufferView,
generator?:
number
| ArrayBuffer
| ArrayBufferView
,
): DiffieHellmanПараметры
prime: ArrayBuffer | ArrayBufferView generator:
number
| ArrayBuffer
| ArrayBufferView
Тип возвращаемого значения
Вариант 3
createDiffieHellman(): DiffieHellmanПараметры
Тип возвращаемого значения
Вариант 4
createDiffieHellman(
prime: string,
primeEncoding: BinaryToTextEncoding,
generator?:
number
| ArrayBuffer
| ArrayBufferView
,
): DiffieHellmanПараметры
prime: string primeEncoding: BinaryToTextEncoding generator:
number
| ArrayBuffer
| ArrayBufferView
Тип возвращаемого значения
Вариант 5
createDiffieHellman(
prime: string,
primeEncoding: BinaryToTextEncoding,
generator: string,
generatorEncoding: BinaryToTextEncoding,
): DiffieHellmanПараметры
prime: string primeEncoding: BinaryToTextEncoding generator: string generatorEncoding: BinaryToTextEncoding Тип возвращаемого значения
функция createDiffieHellmanGroup
Использование в Deno
import { createDiffieHellmanGroup } from "node:crypto";
createDiffieHellmanGroup(name: string): DiffieHellmanGroup
функция createECDH
Использование в Deno
import { createECDH } from "node:crypto";
createECDH(curveName: string): ECDHСоздаёт объект обмена ключами на основе криптографии на эллиптических кривых Диффи — Хеллмана (ECDH), используя заранее заданную кривую, указанную в строке curveName. Используйте getCurves, чтобы получить список доступных имён кривых. В последних версиях OpenSSL команда openssl ecparam -list_curves также выводит имена и описания доступных эллиптических кривых.
Параметры
curveName: string Тип возвращаемого значения
функция createHash
Использование в Deno
import { createHash } from "node:crypto";
createHash(
algorithm: string,
options?: HashOptions,
): HashСоздаёт и возвращает объект Hash, который можно использовать для создания дайджестов хеша с помощью указанного algorithm. Необязательный аргумент options управляет поведением потока. Для хеш-функций XOF, таких как 'shake256', параметр outputLength можно использовать для указания желаемой длины выходных данных в байтах.
Значение algorithm зависит от доступных алгоритмов, поддерживаемых версией OpenSSL на платформе. Например: 'sha256', 'sha512' и т. д. В последних выпусках OpenSSL команда openssl list -digest-algorithms отображает доступные алгоритмы дайджеста.
Пример: вычисление суммы sha256 для файла
import {
createReadStream,
} from 'node:fs';
import { argv } from 'node:process';
const {
createHash,
} = await import('node:crypto');
const filename = argv[2];
const hash = createHash('sha256');
const input = createReadStream(filename);
input.on('readable', () => {
// Only one element is going to be produced by the
// hash stream.
const data = input.read();
if (data)
hash.update(data);
else {
console.log(`${hash.digest('hex')}${filename}`);
}
});
Параметры
algorithm: string options: HashOptions stream.transform options
Тип возвращаемого значения
функция createHmac
Использование в Deno
import { createHmac } from "node:crypto";
createHmac(): HmacСоздаёт и возвращает объект Hmac, использующий указанные algorithm и key. Необязательный аргумент options управляет поведением потока.
Значение algorithm зависит от доступных алгоритмов, поддерживаемых версией OpenSSL на платформе. Например: 'sha256', 'sha512' и т. д. В последних выпусках OpenSSL команда openssl list -digest-algorithms отображает доступные алгоритмы дайджеста.
Значение key — это ключ HMAC, используемый для создания криптографического хеша HMAC. Если это KeyObject, его тип должен быть secret. Если это строка, рекомендуется ознакомиться с caveats when using strings as inputs to cryptographic APIs. Если ключ получен из криптографически безопасного источника энтропии, например randomBytes или generateKey, его длина не должна превышать размер блока algorithm (например, 512 бит для SHA-256).
Пример: вычисление HMAC sha256 для файла
import {
createReadStream,
} from 'node:fs';
import { argv } from 'node:process';
const {
createHmac,
} = await import('node:crypto');
const filename = argv[2];
const hmac = createHmac('sha256', 'a secret');
const input = createReadStream(filename);
input.on('readable', () => {
// Only one element is going to be produced by the
// hash stream.
const data = input.read();
if (data)
hmac.update(data);
else {
console.log(`${hmac.digest('hex')}${filename}`);
}
});
Параметры
algorithm: string key: BinaryLike | KeyObject options: stream.TransformOptions stream.transform options
Тип возвращаемого значения
функция createPrivateKey
Использование в Deno
import { createPrivateKey } from "node:crypto";
createPrivateKey(key: ): KeyObjectСоздаёт и возвращает новый объект ключа, содержащий закрытый ключ. Если key — строка или Buffer, предполагается, что format имеет значение 'pem'; в противном случае key должен быть объектом со свойствами, описанными выше.
Если закрытый ключ зашифрован, необходимо указать passphrase. Длина парольной фразы ограничена 1024 байтами.
Параметры
key: Тип возвращаемого значения
функция createPublicKey
Использование в Deno
import { createPublicKey } from "node:crypto";
createPublicKey(key: ): KeyObjectСоздаёт и возвращает новый объект ключа, содержащий открытый ключ. Если key — строка или Buffer, предполагается, что format имеет значение 'pem'; если key — это KeyObject с типом 'private', открытый ключ выводится из указанного закрытого ключа; в противном случае key должен быть объектом со свойствами, описанными выше.
Если формат — 'pem', 'key' также может быть сертификатом X.509.
Поскольку открытые ключи можно получить из закрытых ключей, вместо открытого ключа можно передать закрытый. В этом случае функция ведёт себя так, как если бы была вызвана createPrivateKey, за исключением того, что тип возвращаемого KeyObject будет 'public', а извлечь закрытый ключ из возвращённого KeyObject будет невозможно. Аналогичным образом, если передан KeyObject с типом 'private', будет возвращён новый KeyObject с типом 'public', и извлечь закрытый ключ из возвращённого объекта будет невозможно.
Параметры
key: Тип возвращаемого значения
функция createSecretKey
Использование в Deno
import { createSecretKey } from "node:crypto";
Перегрузка 1
createSecretKey(key: ArrayBufferView): KeyObjectСоздаёт и возвращает новый объект ключа, содержащий секретный ключ для симметричного шифрования или Hmac.
Параметры
key: ArrayBufferView Тип возвращаемого значения
Перегрузка 2
функция createSign
Использование в Deno
import { createSign } from "node:crypto";
createSign(
algorithm: string,
options?: stream.WritableOptions,
): SignСоздаёт и возвращает объект Sign, использующий указанный algorithm. Используйте getHashes, чтобы получить имена доступных алгоритмов дайджеста. Необязательный аргумент options управляет поведением stream.Writable.
В некоторых случаях экземпляр Sign можно создать, указав имя алгоритма подписи, например 'RSA-SHA256', вместо алгоритма дайджеста. В этом случае будет использоваться соответствующий алгоритм дайджеста. Это работает не для всех алгоритмов подписи, например 'ecdsa-with-SHA256', поэтому лучше всегда использовать имена алгоритмов дайджеста.
Параметры
algorithm: string options: stream.WritableOptions stream.Writable options
Тип возвращаемого значения
функция createVerify
Использование в Deno
import { createVerify } from "node:crypto";
createVerify(
algorithm: string,
options?: stream.WritableOptions,
): VerifyСоздаёт и возвращает объект Verify, использующий указанный алгоритм. Используйте getHashes, чтобы получить массив имён доступных алгоритмов подписи. Необязательный аргумент options управляет поведением stream.Writable.
В некоторых случаях экземпляр Verify можно создать, указав имя алгоритма подписи, например 'RSA-SHA256', вместо алгоритма дайджеста. В этом случае будет использоваться соответствующий алгоритм дайджеста. Это работает не для всех алгоритмов подписи, например 'ecdsa-with-SHA256', поэтому лучше всегда использовать имена алгоритмов дайджеста.
Параметры
algorithm: string options: stream.WritableOptions stream.Writable options
Тип возвращаемого значения
функция diffieHellman
Использование в Deno
import { diffieHellman } from "node:crypto";
diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject; }): BufferВычисляет общий секрет Диффи — Хеллмана на основе privateKey и publicKey. Оба ключа должны иметь одинаковый asymmetricKeyType, который должен быть одним из следующих: 'dh' (для Диффи — Хеллмана), 'ec' (для ECDH), 'x448' или 'x25519' (для ECDH-ES).
Параметры
Тип возвращаемого значения
Buffer функция generateKey
Использование в Deno
import { generateKey } from "node:crypto";
generateKey(
type: "hmac" | "aes",
options: { length: number; },
callback: (
err: Error | null,
key: KeyObject,
) => void,
): voidАсинхронно создаёт новый случайный секретный ключ указанного length. Параметр type определяет, какие проверки будут выполнены для length.
const {
generateKey,
} = await import('node:crypto');
generateKey('hmac', { length: 512 }, (err, key) => {
if (err) throw err;
console.log(key.export().toString('hex')); // 46e..........620
});
Размер сгенерированного ключа HMAC не должен превышать размер блока используемой хеш-функции. Дополнительные сведения см. в разделе createHmac.
Параметры
type: "hmac" | "aes" Предполагаемое назначение сгенерированного секретного ключа. В настоящее время принимаются значения 'hmac' и 'aes'.
options: { length: number; } callback: (
err: Error | null,
key: KeyObject,
) => void Тип возвращаемого значения
void function generateKeyPair
Использование в Deno
import { generateKeyPair } from "node:crypto";
Перегрузка 1
generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Создаёт новую асимметричную пару ключей заданного типа type. В настоящее время поддерживаются RSA, RSA-PSS, DSA, EC, Ed25519, Ed448, X25519, X448 и DH.
Если был указан publicKeyEncoding или privateKeyEncoding, эта функция ведёт себя так, как если бы для её результата был вызван keyObject.export(). В противном случае соответствующая часть ключа возвращается как KeyObject.
Для долговременного хранения рекомендуется кодировать открытые ключи как 'spki', а закрытые ключи — как 'pkcs8' с шифрованием:
const {
generateKeyPair,
} = await import('node:crypto');
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'spki',
format: 'pem',
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: 'top secret',
},
}, (err, publicKey, privateKey) => {
// Handle errors and use the generated key pair.
});
По завершении будет вызван callback, где для err будет задано значение undefined, а publicKey / privateKey будут представлять сгенерированную пару ключей.
Если этот метод вызывается в своей версии с окончанием util.promisify(), он возвращает Promise для Object со свойствами publicKey и privateKey.
Параметры
type: "rsa" Должен быть 'rsa', 'rsa-pss', 'dsa', 'ec', 'ed25519', 'ed448', 'x25519', 'x448' или 'dh'.
options: RSAKeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 2
generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa" options: RSAKeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 3
generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa" options: RSAKeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 4
generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa" options: RSAKeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 5
generateKeyPair(
type: "rsa",
options: RSAKeyPairKeyObjectOptions,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa" options: RSAKeyPairKeyObjectOptions Тип возвращаемого значения
void Перегрузка 6
generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 7
generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 8
generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 9
generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 10
generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairKeyObjectOptions,
): voidПараметр x448 не поддерживается.
Параметры
type: "rsa-pss" options: RSAPSSKeyPairKeyObjectOptions Тип возвращаемого значения
void Перегрузка 11
generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "dsa" options: DSAKeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 12
generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "dsa" options: DSAKeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 13
generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "dsa" options: DSAKeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 14
generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "dsa" options: DSAKeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 15
generateKeyPair(
type: "dsa",
options: DSAKeyPairKeyObjectOptions,
): voidПараметр x448 не поддерживается.
Параметры
type: "dsa" options: DSAKeyPairKeyObjectOptions Тип возвращаемого значения
void Перегрузка 16
generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ec" options: ECKeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 17
generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ec" options: ECKeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 18
generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ec" options: ECKeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 19
generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ec" options: ECKeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 20
generateKeyPair(
type: "ec",
options: ECKeyPairKeyObjectOptions,
): voidПараметр x448 не поддерживается.
Параметры
type: "ec" options: ECKeyPairKeyObjectOptions Тип возвращаемого значения
void Перегрузка 21
generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed25519" options: ED25519KeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 22
generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed25519" options: ED25519KeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 23
generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed25519" options: ED25519KeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 24
generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed25519" options: ED25519KeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 25
generateKeyPair(
type: "ed25519",
options: ED25519KeyPairKeyObjectOptions | undefined,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed25519" options: ED25519KeyPairKeyObjectOptions | undefined Тип возвращаемого значения
void Перегрузка 26
generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed448" options: ED448KeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 27
generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed448" options: ED448KeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 28
generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed448" options: ED448KeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 29
generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed448" options: ED448KeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 30
generateKeyPair(
type: "ed448",
options: ED448KeyPairKeyObjectOptions | undefined,
): voidПараметр x448 не поддерживается.
Параметры
type: "ed448" options: ED448KeyPairKeyObjectOptions | undefined Тип возвращаемого значения
void Перегрузка 31
generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x25519" options: X25519KeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 32
generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x25519" options: X25519KeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 33
generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x25519" options: X25519KeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 34
generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x25519" options: X25519KeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 35
generateKeyPair(
type: "x25519",
options: X25519KeyPairKeyObjectOptions | undefined,
): voidПараметр x448 не поддерживается.
Параметры
type: "x25519" options: X25519KeyPairKeyObjectOptions | undefined Тип возвращаемого значения
void Перегрузка 36
generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x448" options: X448KeyPairOptions<"pem", "pem"> callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 37
generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x448" options: X448KeyPairOptions<"pem", "der"> callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 38
generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x448" options: X448KeyPairOptions<"der", "pem"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void Тип возвращаемого значения
void Перегрузка 39
generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void,
): voidПараметр x448 не поддерживается.
Параметры
type: "x448" options: X448KeyPairOptions<"der", "der"> callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void Тип возвращаемого значения
void Перегрузка 40
generateKeyPair(
type: "x448",
options: X448KeyPairKeyObjectOptions | undefined,
): voidПараметр x448 не поддерживается.
Параметры
type: "x448" options: X448KeyPairKeyObjectOptions | undefined Тип возвращаемого значения
void функция generateKeyPairSync
Использование в Deno
import { generateKeyPairSync } from "node:crypto";
Перегрузка 1
generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Создаёт новую асимметричную пару ключей указанного типа type. В настоящее время поддерживаются RSA, RSA-PSS, DSA, EC, Ed25519, Ed448, X25519, X448 и DH.
Если был указан publicKeyEncoding или privateKeyEncoding, эта функция работает так, как если бы для результата был вызван keyObject.export(). В противном случае соответствующая часть ключа возвращается как KeyObject.
Для кодирования открытых ключей рекомендуется использовать 'spki'. Для кодирования закрытых ключей рекомендуется использовать 'pkcs8' с надёжной парольной фразой и хранить её в тайне.
const {
generateKeyPairSync,
} = await import('node:crypto');
const {
publicKey,
privateKey,
} = generateKeyPairSync('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'spki',
format: 'pem',
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: 'top secret',
},
});
Возвращаемое значение { publicKey, privateKey } представляет собой созданную пару ключей. Если выбрано кодирование PEM, соответствующий ключ будет строкой, в противном случае это будет буфер, содержащий данные в кодировке DER.
Параметры
type: "rsa" Должен быть 'rsa', 'rsa-pss', 'dsa', 'ec', 'ed25519', 'ed448', 'x25519', 'x448' или 'dh'.
options: RSAKeyPairOptions<"pem", "pem"> Возвращаемый тип
KeyPairSyncResult<string, string> Перегрузка 2
generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "rsa" options: RSAKeyPairOptions<"pem", "der"> Возвращаемый тип
KeyPairSyncResult<string, Buffer> Перегрузка 3
generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "rsa" options: RSAKeyPairOptions<"der", "pem"> Возвращаемый тип
KeyPairSyncResult<Buffer, string> Перегрузка 4
generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "rsa" options: RSAKeyPairOptions<"der", "der"> Возвращаемый тип
KeyPairSyncResult<Buffer, Buffer> Перегрузка 5
generateKeyPairSync(
type: "rsa",
options: RSAKeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "rsa" options: RSAKeyPairKeyObjectOptions Возвращаемый тип
Перегрузка 6
generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"pem", "pem"> Возвращаемый тип
KeyPairSyncResult<string, string> Перегрузка 7
generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"pem", "der"> Возвращаемый тип
KeyPairSyncResult<string, Buffer> Перегрузка 8
generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"der", "pem"> Возвращаемый тип
KeyPairSyncResult<Buffer, string> Перегрузка 9
generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "rsa-pss" options: RSAPSSKeyPairOptions<"der", "der"> Возвращаемый тип
KeyPairSyncResult<Buffer, Buffer> Перегрузка 10
generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "rsa-pss" options: RSAPSSKeyPairKeyObjectOptions Возвращаемый тип
Перегрузка 11
generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "dsa" options: DSAKeyPairOptions<"pem", "pem"> Возвращаемый тип
KeyPairSyncResult<string, string> Перегрузка 12
generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "dsa" options: DSAKeyPairOptions<"pem", "der"> Возвращаемый тип
KeyPairSyncResult<string, Buffer> Перегрузка 13
generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "dsa" options: DSAKeyPairOptions<"der", "pem"> Возвращаемый тип
KeyPairSyncResult<Buffer, string> Перегрузка 14
generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "dsa" options: DSAKeyPairOptions<"der", "der"> Возвращаемый тип
KeyPairSyncResult<Buffer, Buffer> Перегрузка 15
generateKeyPairSync(
type: "dsa",
options: DSAKeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "dsa" options: DSAKeyPairKeyObjectOptions Возвращаемый тип
Перегрузка 16
generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "ec" options: ECKeyPairOptions<"pem", "pem"> Возвращаемый тип
KeyPairSyncResult<string, string> Перегрузка 17
generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "ec" options: ECKeyPairOptions<"pem", "der"> Возвращаемый тип
KeyPairSyncResult<string, Buffer> Перегрузка 18
generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "ec" options: ECKeyPairOptions<"der", "pem"> Возвращаемый тип
KeyPairSyncResult<Buffer, string> Перегрузка 19
generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "ec" options: ECKeyPairOptions<"der", "der"> Возвращаемый тип
KeyPairSyncResult<Buffer, Buffer> Перегрузка 20
generateKeyPairSync(
type: "ec",
options: ECKeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "ec" options: ECKeyPairKeyObjectOptions Возвращаемый тип
Перегрузка 21
generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "ed25519" options: ED25519KeyPairOptions<"pem", "pem"> Возвращаемый тип
KeyPairSyncResult<string, string> Перегрузка 22
generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "ed25519" options: ED25519KeyPairOptions<"pem", "der"> Возвращаемый тип
KeyPairSyncResult<string, Buffer> Перегрузка 23
generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "ed25519" options: ED25519KeyPairOptions<"der", "pem"> Возвращаемый тип
KeyPairSyncResult<Buffer, string> Перегрузка 24
generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "ed25519" options: ED25519KeyPairOptions<"der", "der"> Возвращаемый тип
KeyPairSyncResult<Buffer, Buffer> Перегрузка 25
generateKeyPairSync(
type: "ed25519",
options?: ED25519KeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "ed25519" options: ED25519KeyPairKeyObjectOptions Возвращаемый тип
Перегрузка 26
generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "ed448" options: ED448KeyPairOptions<"pem", "pem"> Возвращаемый тип
KeyPairSyncResult<string, string> Перегрузка 27
generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "ed448" options: ED448KeyPairOptions<"pem", "der"> Возвращаемый тип
KeyPairSyncResult<string, Buffer> Перегрузка 28
generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "ed448" options: ED448KeyPairOptions<"der", "pem"> Возвращаемый тип
KeyPairSyncResult<Buffer, string> Перегрузка 29
generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "ed448" options: ED448KeyPairOptions<"der", "der"> Возвращаемый тип
KeyPairSyncResult<Buffer, Buffer> Перегрузка 30
generateKeyPairSync(
type: "ed448",
options?: ED448KeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "ed448" options: ED448KeyPairKeyObjectOptions Тип возвращаемого значения
Перегрузка 31
generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "x25519" options: X25519KeyPairOptions<"pem", "pem"> Тип возвращаемого значения
KeyPairSyncResult<string, string> Перегрузка 32
generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "x25519" options: X25519KeyPairOptions<"pem", "der"> Тип возвращаемого значения
KeyPairSyncResult<string, Buffer> Перегрузка 33
generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "x25519" options: X25519KeyPairOptions<"der", "pem"> Тип возвращаемого значения
KeyPairSyncResult<Buffer, string> Перегрузка 34
generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "x25519" options: X25519KeyPairOptions<"der", "der"> Тип возвращаемого значения
KeyPairSyncResult<Buffer, Buffer> Перегрузка 35
generateKeyPairSync(
type: "x25519",
options?: X25519KeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "x25519" options: X25519KeyPairKeyObjectOptions Тип возвращаемого значения
Перегрузка 36
generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>Параметры
type: "x448" options: X448KeyPairOptions<"pem", "pem"> Тип возвращаемого значения
KeyPairSyncResult<string, string> Перегрузка 37
generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>Параметры
type: "x448" options: X448KeyPairOptions<"pem", "der"> Тип возвращаемого значения
KeyPairSyncResult<string, Buffer> Перегрузка 38
generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>Параметры
type: "x448" options: X448KeyPairOptions<"der", "pem"> Тип возвращаемого значения
KeyPairSyncResult<Buffer, string> Перегрузка 39
generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>Параметры
type: "x448" options: X448KeyPairOptions<"der", "der"> Тип возвращаемого значения
KeyPairSyncResult<Buffer, Buffer> Перегрузка 40
generateKeyPairSync(
type: "x448",
options?: X448KeyPairKeyObjectOptions,
): KeyPairKeyObjectResultПараметры
type: "x448" options: X448KeyPairKeyObjectOptions Тип возвращаемого значения
function generateKeySync
Использование в Deno
import { generateKeySync } from "node:crypto";
generateKeySync(
type: "hmac" | "aes",
options: { length: number; },
): KeyObjectСинхронно генерирует новый случайный секретный ключ заданного length. type определяет, какие проверки будут выполнены для length.
const {
generateKeySync,
} = await import('node:crypto');
const key = generateKeySync('hmac', { length: 512 });
console.log(key.export().toString('hex')); // e89..........41e
Размер сгенерированного ключа HMAC не должен превышать размер блока используемой хеш-функции. Дополнительные сведения см. в разделе createHmac.
Параметры
type: "hmac" | "aes" Предполагаемое назначение сгенерированного секретного ключа. В настоящее время принимаются значения 'hmac' и 'aes'.
options: { length: number; } Тип возвращаемого значения
function generatePrime
Использование в Deno
import { generatePrime } from "node:crypto";
Перегрузка 1
generatePrime(
size: number,
callback: (
err: Error | null,
prime: ArrayBuffer,
) => void,
): voidПараметр safe, add и rem не поддерживается.
Генерирует псевдослучайное простое число длиной size бит.
Если options.safe равно true, простое число будет безопасным, то есть (prime - 1) / 2 также будет простым числом.
Параметры options.add и options.rem можно использовать для задания дополнительных требований, например, для алгоритма Диффи — Хеллмана:
- Если заданы и
options.add, иoptions.rem, простое число будет удовлетворять условиюprime % add = rem. - Если задан только
options.add, аoptions.safeне равенtrue, простое число будет удовлетворять условиюprime % add = 1. - Если задан только
options.add, аoptions.safeзадан какtrue, простое число будет удовлетворять условиюprime % add = 3. Это необходимо, посколькуprime % add = 1дляoptions.add > 2противоречило бы условию, обеспечиваемомуoptions.safe. -
options.remигнорируется, еслиoptions.addне задан.
Если значения options.add и options.rem заданы как ArrayBuffer, SharedArrayBuffer, TypedArray, Buffer или DataView, их необходимо кодировать в виде последовательностей в порядке от старшего байта к младшему.
По умолчанию простое число кодируется в виде последовательности октетов в порядке от старшего байта к младшему в ArrayBuffer. Если параметр bigint равен true, возвращается значение типа bigint.
Параметры
size: number Размер генерируемого простого числа (в битах).
callback: (
err: Error | null,
prime: ArrayBuffer,
) => void Тип возвращаемого значения
void Перегрузка 2
generatePrime(
size: number,
options: GeneratePrimeOptionsBigInt,
callback: (
err: Error | null,
prime: bigint,
) => void,
): voidПараметр safe, add и rem не поддерживается.
Параметры
size: number options: GeneratePrimeOptionsBigInt callback: (
err: Error | null,
prime: bigint,
) => void Тип возвращаемого значения
void Перегрузка 3
generatePrime(
size: number,
options: GeneratePrimeOptionsArrayBuffer,
callback: (
err: Error | null,
prime: ArrayBuffer,
) => void,
): voidПараметр safe, add и rem не поддерживается.
Параметры
size: number options: GeneratePrimeOptionsArrayBuffer callback: (
err: Error | null,
prime: ArrayBuffer,
) => void Тип возвращаемого значения
void Перегрузка 4
generatePrime(
size: number,
options: GeneratePrimeOptions,
callback: (
err: Error | null,
prime: ArrayBuffer | bigint,
) => void,
): voidПараметр safe, add и rem не поддерживается.
Параметры
size: number options: GeneratePrimeOptions callback: (
err: Error | null,
prime: ArrayBuffer | bigint,
) => void Тип возвращаемого значения
void function generatePrimeSync
Использование в Deno
import { generatePrimeSync } from "node:crypto";
Перегрузка 1
generatePrimeSync(size: number): ArrayBufferГенерирует псевдослучайное простое число длиной size бит.
Если options.safe равно true, простое число будет безопасным, то есть (prime - 1) / 2 также будет простым числом.
Параметры options.add и options.rem можно использовать для задания дополнительных требований, например, для алгоритма Диффи — Хеллмана:
- Если заданы и
options.add, иoptions.rem, простое число будет удовлетворять условиюprime % add = rem. - Если задан только
options.add, аoptions.safeне равенtrue, простое число будет удовлетворять условиюprime % add = 1. - Если задан только
options.add, аoptions.safeзадан какtrue, простое число будет удовлетворять условиюprime % add = 3. Это необходимо, посколькуprime % add = 1дляoptions.add > 2противоречило бы условию, обеспечиваемомуoptions.safe. -
options.remигнорируется, еслиoptions.addне задан.
Если значения options.add и options.rem заданы как ArrayBuffer, SharedArrayBuffer, TypedArray, Buffer или DataView, их необходимо кодировать в виде последовательностей в порядке от старшего байта к младшему.
По умолчанию простое число кодируется в виде последовательности октетов в порядке от старшего байта к младшему в ArrayBuffer. Если параметр bigint равен true, возвращается значение типа bigint.
Параметры
size: number Размер генерируемого простого числа (в битах).
Тип возвращаемого значения
ArrayBuffer Перегрузка 2
generatePrimeSync(
size: number,
options: GeneratePrimeOptionsBigInt,
): bigintПараметры
size: number options: GeneratePrimeOptionsBigInt Тип возвращаемого значения
bigint Перегрузка 3
generatePrimeSync(
size: number,
options: GeneratePrimeOptionsArrayBuffer,
): ArrayBufferПараметры
size: number options: GeneratePrimeOptionsArrayBuffer Тип возвращаемого значения
ArrayBuffer Перегрузка 4
generatePrimeSync(
size: number,
options: GeneratePrimeOptions,
): ArrayBuffer | bigintПараметры
size: number options: GeneratePrimeOptions Тип возвращаемого значения
ArrayBuffer | bigint function getCipherInfo
Использование в Deno
import { getCipherInfo } from "node:crypto";
getCipherInfo(
nameOrNid: string | number,
options?: CipherInfoOptions,
): CipherInfo | undefinedВозвращает сведения о заданном шифре.
Некоторые шифры поддерживают ключи и векторы инициализации переменной длины. По умолчанию метод crypto.getCipherInfo() возвращает значения по умолчанию для таких шифров. Чтобы проверить, допустима ли заданная длина ключа или вектора инициализации для указанного шифра, используйте параметры keyLength и ivLength. Если заданные значения недопустимы, будет возвращено undefined.
Параметры
nameOrNid: string | number Имя или nid шифра, сведения о котором нужно получить.
options: CipherInfoOptions Тип возвращаемого значения
CipherInfo | undefined функция getCiphers
Использование в Deno
import { getCiphers } from "node:crypto";
getCiphers(): string[]const {
getCiphers,
} = await import('node:crypto');
console.log(getCiphers()); // ['aes-128-cbc', 'aes-128-ccm', ...]
Тип возвращаемого значения
string[] Массив с названиями поддерживаемых алгоритмов шифрования.
функция getCurves
Использование в Deno
import { getCurves } from "node:crypto";
getCurves(): string[]const {
getCurves,
} = await import('node:crypto');
console.log(getCurves()); // ['Oakley-EC2N-3', 'Oakley-EC2N-4', ...]
Тип возвращаемого значения
string[] Массив с названиями поддерживаемых эллиптических кривых.
функция getDiffieHellman
Использование в Deno
import { getDiffieHellman } from "node:crypto";
getDiffieHellman(groupName: string): DiffieHellmanGroupСоздает предопределенный объект обмена ключами DiffieHellmanGroup. Поддерживаемые группы перечислены в документации для DiffieHellmanGroup.
Возвращаемый объект имитирует интерфейс объектов, создаваемых с помощью createDiffieHellman, но не позволяет изменять ключи (например, с помощью diffieHellman.setPublicKey()). Преимущество этого метода состоит в том, что сторонам не нужно заранее генерировать или обмениваться модулем группы, что позволяет сэкономить процессорное время и время на обмен данными.
Пример (получение общего секрета):
const {
getDiffieHellman,
} = await import('node:crypto');
const alice = getDiffieHellman('modp14');
const bob = getDiffieHellman('modp14');
alice.generateKeys();
bob.generateKeys();
const aliceSecret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
const bobSecret = bob.computeSecret(alice.getPublicKey(), null, 'hex');
// aliceSecret and bobSecret should be the same
console.log(aliceSecret === bobSecret);
Параметры
groupName: string Тип возвращаемого значения
функция getFips
Использование в Deno
import { getFips } from "node:crypto";
getFips(): 1 | 0Тип возвращаемого значения
1 | 0 1 тогда и только тогда, когда в данный момент используется криптографический провайдер, соответствующий стандарту FIPS, и 0 в противном случае. В будущем выпуске с изменением основной версии semver тип возвращаемого значения этого API может быть изменен на {boolean}.
функция getHashes
Использование в Deno
import { getHashes } from "node:crypto";
getHashes(): string[]const {
getHashes,
} = await import('node:crypto');
console.log(getHashes()); // ['DSA', 'DSA-SHA', 'DSA-SHA1', ...]
Тип возвращаемого значения
string[] Массив названий поддерживаемых алгоритмов хеширования, например 'RSA-SHA256'. Алгоритмы хеширования также называют алгоритмами «дайджеста».
функция getRandomValues
Использование в Deno
import { getRandomValues } from "node:crypto";
getRandomValues<T extends webcrypto.BufferSource>(typedArray: T): TУдобный псевдоним для webcrypto.getRandomValues. Эта реализация не соответствует спецификации Web Crypto; для написания совместимого с вебом кода используйте вместо нее webcrypto.getRandomValues.
Параметры типа
T extends webcrypto.BufferSource Параметры
typedArray: T Тип возвращаемого значения
Возвращает typedArray.
функция hash
Использование в Deno
import { hash } from "node:crypto";
Перегрузка 1
hash(): stringВспомогательная функция для однократного вычисления хеш-дайджеста данных. При хешировании небольшого объема уже доступных данных (<= 5MB) она может работать быстрее, чем объектный интерфейс crypto.createHash(). Если данных может быть много или они передаются потоком, рекомендуется использовать crypto.createHash(). Набор algorithm зависит от алгоритмов, поддерживаемых установленной на платформе версией OpenSSL. Например, 'sha256', 'sha512' и т. д. В последних версиях OpenSSL команда openssl list -digest-algorithms выводит список доступных алгоритмов дайджестов.
Пример:
import crypto from 'node:crypto';
import { Buffer } from 'node:buffer';
// Hashing a string and return the result as a hex-encoded string.
const string = 'Node.js';
// 10b3493287f831e81a438811a1ffba01f8cec4b7
console.log(crypto.hash('sha1', string));
// Encode a base64-encoded string into a Buffer, hash it and return
// the result as a buffer.
const base64 = 'Tm9kZS5qcw==';
// <Buffer 10 b3 49 32 87 f8 31 e8 1a 43 88 11 a1 ff ba 01 f8 ce c4 b7>
console.log(crypto.hash('sha1', Buffer.from(base64, 'base64'), 'buffer'));
Параметры
algorithm: string data: BinaryLike Если data — строка, перед хешированием она будет закодирована в UTF-8. Если для строкового ввода требуется другая кодировка, можно закодировать строку в TypedArray с помощью TextEncoder или Buffer.from() и передать вместо этого закодированный TypedArray в этот API.
outputEncoding: BinaryToTextEncoding = 'hex' Кодировка, используемая для кодирования возвращаемого дайджеста.
Тип возвращаемого значения
string Перегрузка 2
hash(): BufferПараметры
Тип возвращаемого значения
Buffer Перегрузка 3
hash(): string | BufferПараметры
Тип возвращаемого значения
string | Buffer функция hkdf
Использование в Deno
import { hkdf } from "node:crypto";
hkdf(
digest: string,
irm: BinaryLike | KeyObject,
salt: BinaryLike,
info: BinaryLike,
keylen: number,
callback: (
err: Error | null,
derivedKey: ArrayBuffer,
) => void,
): voidHKDF — это простая функция выработки ключа, определенная в RFC 5869. Заданные ikm, salt и info используются вместе с digest для получения ключа длиной keylen байт.
Переданная функция callback вызывается с двумя аргументами: err и derivedKey. Если при выработке ключа возникает ошибка, будет установлено значение err; в противном случае err будет иметь значение null. Успешно созданный derivedKey будет передан обратному вызову в виде ArrayBuffer. Если какой-либо входной аргумент содержит недопустимое значение или имеет недопустимый тип, будет выброшена ошибка.
import { Buffer } from 'node:buffer';
const {
hkdf,
} = await import('node:crypto');
hkdf('sha512', 'key', 'salt', 'info', 64, (err, derivedKey) => {
if (err) throw err;
console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653'
});
Параметры
digest: string Используемый алгоритм дайджеста.
irm: BinaryLike | KeyObject salt: BinaryLike Значение соли. Параметр обязателен, но может быть пустым.
info: BinaryLike Дополнительная информация. Параметр обязателен, но может быть пустым и не может превышать 1024 байта.
keylen: number Длина создаваемого ключа. Должна быть больше 0. Максимально допустимое значение равно 255, умноженному на число байтов, генерируемых выбранной функцией дайджеста (например, sha512 генерирует 64-байтовые хеши, поэтому максимальный размер выходных данных HKDF составляет 16320 байт).
callback: (
err: Error | null,
derivedKey: ArrayBuffer,
) => void Тип возвращаемого значения
void функция hkdfSync
Использование в Deno
import { hkdfSync } from "node:crypto";
hkdfSync(): ArrayBufferПредоставляет синхронную функцию выработки ключа HKDF, определенную в RFC 5869. Заданные ikm, salt и info используются вместе с digest для получения ключа длиной keylen байт.
Успешно созданный derivedKey возвращается в виде ArrayBuffer.
Если какой-либо входной аргумент содержит недопустимое значение или имеет недопустимый тип либо если невозможно создать производный ключ, будет выброшена ошибка.
import { Buffer } from 'node:buffer';
const {
hkdfSync,
} = await import('node:crypto');
const derivedKey = hkdfSync('sha512', 'key', 'salt', 'info', 64);
console.log(Buffer.from(derivedKey).toString('hex')); // '24156e2...5391653'
Параметры
digest: string Используемый алгоритм дайджеста.
ikm: BinaryLike | KeyObject Входной материал для выработки ключа. Параметр обязателен, но может быть пустым.
salt: BinaryLike Значение соли. Параметр обязателен, но может быть пустым.
info: BinaryLike Дополнительная информация. Параметр обязателен, но может быть пустым и не может превышать 1024 байта.
keylen: number Длина создаваемого ключа. Должна быть больше 0. Максимально допустимое значение равно 255, умноженному на число байтов, генерируемых выбранной функцией дайджеста (например, sha512 генерирует 64-байтовые хеши, поэтому максимальный размер выходных данных HKDF составляет 16320 байт).
Тип возвращаемого значения
ArrayBuffer функция pbkdf2
Использование в Deno
import { pbkdf2 } from "node:crypto";
pbkdf2(
password: BinaryLike,
salt: BinaryLike,
iterations: number,
keylen: number,
digest: string,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void,
): voidПредоставляет асинхронную реализацию функции выработки ключа на основе пароля 2 (PBKDF2). Для получения ключа запрошенной длины (в байтах) (keylen) из значений password, salt и iterations применяется выбранный алгоритм дайджеста HMAC, указанный в digest.
Переданная функция callback вызывается с двумя аргументами: err и derivedKey. Если при выработке ключа возникает ошибка, будет установлено значение err; в противном случае err будет иметь значение null. По умолчанию успешно созданный derivedKey передается обратному вызову в виде Buffer. Если какой-либо входной аргумент содержит недопустимое значение или имеет недопустимый тип, будет выброшена ошибка.
Аргумент iterations должен быть числом, значение которого следует установить как можно выше. Чем больше число итераций, тем надежнее будет производный ключ, но тем больше времени займет выполнение.
Значение salt должно быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробности см. в документе NIST SP 800-132.
При передаче строк для password или salt обратите внимание на caveats when using strings as inputs to cryptographic APIs.
const {
pbkdf2,
} = await import('node:crypto');
pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
if (err) throw err;
console.log(derivedKey.toString('hex')); // '3745e48...08d59ae'
});
Массив поддерживаемых функций дайджеста можно получить с помощью getHashes.
Этот API использует пул потоков libuv, что может неожиданно и отрицательно сказаться на производительности некоторых приложений; дополнительную информацию см. в документации UV_THREADPOOL_SIZE.
Параметры
password: BinaryLike salt: BinaryLike iterations: number keylen: number digest: string callback: (
err: Error | null,
derivedKey: Buffer,
) => void Тип возвращаемого значения
void функция pbkdf2Sync
Использование в Deno
import { pbkdf2Sync } from "node:crypto";
pbkdf2Sync(): BufferПредоставляет синхронную реализацию функции выработки ключа на основе пароля 2 (PBKDF2). Для получения ключа запрошенной длины (в байтах) (keylen) из значений password, salt и iterations применяется выбранный алгоритм дайджеста HMAC, указанный в digest.
При возникновении ошибки будет выброшено Error; в противном случае производный ключ будет возвращен в виде Buffer.
Аргумент iterations должен быть числом, значение которого следует установить как можно выше. Чем больше число итераций, тем надежнее будет производный ключ, но тем больше времени займет выполнение.
Значение salt должно быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробности см. в документе NIST SP 800-132.
При передаче строк для password или salt обратите внимание на caveats when using strings as inputs to cryptographic APIs.
const {
pbkdf2Sync,
} = await import('node:crypto');
const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512');
console.log(key.toString('hex')); // '3745e48...08d59ae'
Массив поддерживаемых функций дайджеста можно получить с помощью getHashes.
Параметры
Тип возвращаемого значения
Buffer функция privateDecrypt
Использование в Deno
import { privateDecrypt } from "node:crypto";
privateDecrypt(
privateKey: RsaPrivateKey | KeyLike,
buffer: ArrayBufferView | string,
): BufferРасшифровывает buffer с помощью privateKey. buffer ранее был зашифрован с помощью соответствующего открытого ключа, например с использованием publicEncrypt.
Если privateKey не является KeyObject, эта функция работает так, как если бы privateKey был передан в createPrivateKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_OAEP_PADDING.
Параметры
privateKey: RsaPrivateKey | KeyLike buffer: ArrayBufferView | string Тип возвращаемого значения
Buffer функция privateEncrypt
Использование в Deno
import { privateEncrypt } from "node:crypto";
privateEncrypt(
privateKey: RsaPrivateKey | KeyLike,
buffer: ArrayBufferView | string,
): BufferШифрует buffer с помощью privateKey. Возвращённые данные можно расшифровать с помощью соответствующего открытого ключа, например с использованием publicDecrypt.
Если privateKey не является KeyObject, эта функция работает так, как если бы privateKey был передан в createPrivateKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_PADDING.
Параметры
privateKey: RsaPrivateKey | KeyLike buffer: ArrayBufferView | string Тип возвращаемого значения
Buffer функция pseudoRandomBytes
Использование в Deno
import { pseudoRandomBytes } from "node:crypto";
Вариант 1
pseudoRandomBytes(size: number): BufferПараметры
size: number Тип возвращаемого значения
Buffer Вариант 2
pseudoRandomBytes(
size: number,
callback: (
err: Error | null,
buf: Buffer,
) => void,
): voidПараметры
size: number callback: (
err: Error | null,
buf: Buffer,
) => void Тип возвращаемого значения
void функция publicDecrypt
Использование в Deno
import { publicDecrypt } from "node:crypto";
publicDecrypt(
key: ,
buffer: ArrayBufferView | string,
): BufferЭтот символ представляет собой неработающую заглушку.
Расшифровывает buffer с помощью key.buffer ранее был зашифрован с помощью соответствующего закрытого ключа, например с использованием privateEncrypt.
Если key не является KeyObject, эта функция работает так, как если бы key был передан в createPublicKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_PADDING.
Поскольку открытые ключи RSA можно получить из закрытых ключей, вместо открытого ключа можно передать закрытый ключ.
Параметры
key: buffer: ArrayBufferView | string Тип возвращаемого значения
Buffer функция publicEncrypt
Использование в Deno
import { publicEncrypt } from "node:crypto";
publicEncrypt(
key: ,
buffer: ArrayBufferView | string,
): BufferШифрует содержимое buffer с помощью key и возвращает новый Buffer с зашифрованным содержимым. Возвращённые данные можно расшифровать с помощью соответствующего закрытого ключа, например с использованием privateDecrypt.
Если key не является KeyObject, эта функция работает так, как если бы key был передан в createPublicKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_OAEP_PADDING.
Поскольку открытые ключи RSA можно получить из закрытых ключей, вместо открытого ключа можно передать закрытый ключ.
Параметры
key: buffer: ArrayBufferView | string Тип возвращаемого значения
Buffer функция randomBytes
Использование в Deno
import { randomBytes } from "node:crypto";
Вариант 1
randomBytes(size: number): BufferГенерирует криптографически стойкие псевдослучайные данные. Аргумент size — это число, указывающее количество байтов для генерации.
Если указана функция callback, байты генерируются асинхронно, а функция callback вызывается с двумя аргументами: err и buf. В случае ошибки err будет объектом Error; в противном случае это null. Аргумент buf — это Buffer, содержащий сгенерированные байты.
// Asynchronous
const {
randomBytes,
} = await import('node:crypto');
randomBytes(256, (err, buf) => {
if (err) throw err;
console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`);
});
Если функция callback не указана, случайные байты генерируются синхронно и возвращаются в виде Buffer. Если при генерации байтов возникнет проблема, будет выброшена ошибка.
// Synchronous
const {
randomBytes,
} = await import('node:crypto');
const buf = randomBytes(256);
console.log(
`${buf.length} bytes of random data: ${buf.toString('hex')}`);
Метод crypto.randomBytes() не завершится, пока не станет доступно достаточное количество энтропии. Обычно это занимает не более нескольких миллисекунд. Единственный случай, когда генерация случайных байтов может занять заметно больше времени, — сразу после загрузки системы, когда уровень энтропии ещё низок.
Этот API использует пул потоков libuv, что может оказывать неожиданное и негативное влияние на производительность некоторых приложений; дополнительную информацию см. в документации UV_THREADPOOL_SIZE.
Асинхронная версия crypto.randomBytes() выполняется в рамках одного запроса к пулу потоков. Чтобы уменьшить разброс длительности задач в пуле потоков, разбивайте большие запросы randomBytes на части, если они выполняются в рамках обработки запроса клиента.
Параметры
size: number Количество байтов для генерации. Значение size не должно превышать 2**31 - 1.
Тип возвращаемого значения
Buffer если функция callback не указана.
Вариант 2
randomBytes(
size: number,
callback: (
err: Error | null,
buf: Buffer,
) => void,
): voidПараметры
size: number callback: (
err: Error | null,
buf: Buffer,
) => void Тип возвращаемого значения
void функция randomFill
Использование в Deno
import { randomFill } from "node:crypto";
Вариант 1
randomFill<T extends ArrayBufferView>(
buffer: T,
callback: (
err: Error | null,
buf: T,
) => void,
): voidЭта функция похожа на randomBytes, но в качестве первого аргумента требует Buffer, который будет заполнен. Кроме того, необходимо передать функцию обратного вызова.
Если функция callback не указана, будет выброшена ошибка.
import { Buffer } from 'node:buffer';
const { randomFill } = await import('node:crypto');
const buf = Buffer.alloc(10);
randomFill(buf, (err, buf) => {
if (err) throw err;
console.log(buf.toString('hex'));
});
randomFill(buf, 5, (err, buf) => {
if (err) throw err;
console.log(buf.toString('hex'));
});
// The above is equivalent to the following:
randomFill(buf, 5, 5, (err, buf) => {
if (err) throw err;
console.log(buf.toString('hex'));
});
В качестве buffer можно передать любой экземпляр ArrayBuffer, TypedArray или DataView.
Хотя сюда входят экземпляры Float32Array и Float64Array, эту функцию не следует использовать для генерации случайных чисел с плавающей точкой. Результат может содержать +Infinity, -Infinity и NaN; и даже если массив содержит только конечные числа, они не будут иметь равномерного случайного распределения и не будут иметь осмысленных нижней или верхней границы.
import { Buffer } from 'node:buffer';
const { randomFill } = await import('node:crypto');
const a = new Uint32Array(10);
randomFill(a, (err, buf) => {
if (err) throw err;
console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)
.toString('hex'));
});
const b = new DataView(new ArrayBuffer(10));
randomFill(b, (err, buf) => {
if (err) throw err;
console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)
.toString('hex'));
});
const c = new ArrayBuffer(10);
randomFill(c, (err, buf) => {
if (err) throw err;
console.log(Buffer.from(buf).toString('hex'));
});
Этот API использует пул потоков libuv, что может оказывать неожиданное и негативное влияние на производительность некоторых приложений; дополнительную информацию см. в документации UV_THREADPOOL_SIZE.
Асинхронная версия crypto.randomFill() выполняется в рамках одного запроса к пулу потоков. Чтобы уменьшить разброс длительности задач в пуле потоков, разбивайте большие запросы randomFill на части, если они выполняются в рамках обработки запроса клиента.
Параметры типа
T extends ArrayBufferView Параметры
Тип возвращаемого значения
void Вариант 2
randomFill<T extends ArrayBufferView>(
buffer: T,
offset: number,
callback: (
err: Error | null,
buf: T,
) => void,
): void
Вариант 3
randomFill<T extends ArrayBufferView>(
buffer: T,
offset: number,
size: number,
callback: (
err: Error | null,
buf: T,
) => void,
): void
функция randomFillSync
Использование в Deno
import { randomFillSync } from "node:crypto";
randomFillSync<T extends ArrayBufferView>(
buffer: T,
offset?: number,
size?: number,
): TСинхронная версия randomFill.
import { Buffer } from 'node:buffer';
const { randomFillSync } = await import('node:crypto');
const buf = Buffer.alloc(10);
console.log(randomFillSync(buf).toString('hex'));
randomFillSync(buf, 5);
console.log(buf.toString('hex'));
// The above is equivalent to the following:
randomFillSync(buf, 5, 5);
console.log(buf.toString('hex'));
В качестве buffer можно передать любой экземпляр ArrayBuffer, TypedArray или DataView.
import { Buffer } from 'node:buffer';
const { randomFillSync } = await import('node:crypto');
const a = new Uint32Array(10);
console.log(Buffer.from(randomFillSync(a).buffer,
a.byteOffset, a.byteLength).toString('hex'));
const b = new DataView(new ArrayBuffer(10));
console.log(Buffer.from(randomFillSync(b).buffer,
b.byteOffset, b.byteLength).toString('hex'));
const c = new ArrayBuffer(10);
console.log(Buffer.from(randomFillSync(c)).toString('hex'));
Параметры типа
T extends ArrayBufferView Параметры
buffer: T Обязательный параметр. Размер переданного buffer не должен превышать 2**31 - 1.
offset: number = 0 size: number = buffer.length - offset Тип возвращаемого значения
Объект, переданный в качестве аргумента buffer.
функция randomInt
Использование в Deno
import { randomInt } from "node:crypto";
Вариант 1
randomInt(max: number): numberВозвращает случайное целое число n, такое что min <= n < max. В этой реализации исключено смещение по модулю.
Диапазон (max - min) должен быть меньше 2**48. min и max должны быть безопасными целыми числами.
Если функция callback не указана, случайное целое число генерируется синхронно.
// Asynchronous
const {
randomInt,
} = await import('node:crypto');
randomInt(3, (err, n) => {
if (err) throw err;
console.log(`Random number chosen from (0, 1, 2): ${n}`);
});
// Synchronous
const {
randomInt,
} = await import('node:crypto');
const n = randomInt(3);
console.log(`Random number chosen from (0, 1, 2): ${n}`);
// With `min` argument
const {
randomInt,
} = await import('node:crypto');
const n = randomInt(1, 7);
console.log(`The dice rolled: ${n}`);
Параметры
max: number Конец случайного диапазона (не включительно).
Тип возвращаемого значения
number Вариант 2
randomInt(
min: number,
max: number,
): numberПараметры
min: number max: number Тип возвращаемого значения
number Вариант 3
randomInt(
max: number,
callback: (
err: Error | null,
value: number,
) => void,
): voidПараметры
max: number callback: (
err: Error | null,
value: number,
) => void Тип возвращаемого значения
void Вариант 4
randomInt(
min: number,
max: number,
callback: (
err: Error | null,
value: number,
) => void,
): voidПараметры
min: number max: number callback: (
err: Error | null,
value: number,
) => void Тип возвращаемого значения
void функция randomUUID
Использование в Deno
import { randomUUID } from "node:crypto";
randomUUID(options?: RandomUUIDOptions): UUIDСоздаёт случайный UUID версии 4 в соответствии с RFC 4122. UUID генерируется с помощью криптографического генератора псевдослучайных чисел.
Параметры
options: RandomUUIDOptions Тип возвращаемого значения
функция scrypt
Использование в Deno
import { scrypt } from "node:crypto";
Вариант перегрузки 1
scrypt(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void,
): voidПредоставляет асинхронную реализацию scrypt. Scrypt — это функция выработки ключа на основе пароля, разработанная таким образом, чтобы требовать значительных вычислительных ресурсов и объёма памяти, делая атаки методом перебора неэффективными.
salt должен быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробнее см. в документе NIST SP 800-132.
При передаче строк для password или salt рекомендуется учитывать caveats when using strings as inputs to cryptographic APIs.
Функция callback вызывается с двумя аргументами: err и derivedKey. err — это объект исключения, если при выработке ключа произошла ошибка; в противном случае err — это null. derivedKey передаётся функции обратного вызова как Buffer.
Если какой-либо из входных аргументов содержит недопустимое значение или имеет недопустимый тип, возникает исключение.
const {
scrypt,
} = await import('node:crypto');
// Using the factory defaults.
scrypt('password', 'salt', 64, (err, derivedKey) => {
if (err) throw err;
console.log(derivedKey.toString('hex')); // '3745e48...08d59ae'
});
// Using a custom N parameter. Must be a power of two.
scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => {
if (err) throw err;
console.log(derivedKey.toString('hex')); // '3745e48...aa39b34'
});
Параметры
password: BinaryLike salt: BinaryLike keylen: number callback: (
err: Error | null,
derivedKey: Buffer,
) => void Тип возвращаемого значения
void Вариант перегрузки 2
scrypt(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
options: ScryptOptions,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void,
): voidПараметры
password: BinaryLike salt: BinaryLike keylen: number options: ScryptOptions callback: (
err: Error | null,
derivedKey: Buffer,
) => void Тип возвращаемого значения
void функция scryptSync
Использование в Deno
import { scryptSync } from "node:crypto";
scryptSync(): BufferПредоставляет синхронную реализацию scrypt. Scrypt — это функция выработки ключа на основе пароля, разработанная таким образом, чтобы требовать значительных вычислительных ресурсов и объёма памяти, делая атаки методом перебора неэффективными.
salt должен быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробнее см. в документе NIST SP 800-132.
При передаче строк для password или salt рекомендуется учитывать caveats when using strings as inputs to cryptographic APIs.
Если при выработке ключа произошла ошибка, возникает исключение; в противном случае выработанный ключ возвращается как Buffer.
Если какой-либо из входных аргументов содержит недопустимое значение или имеет недопустимый тип, возникает исключение.
const {
scryptSync,
} = await import('node:crypto');
// Using the factory defaults.
const key1 = scryptSync('password', 'salt', 64);
console.log(key1.toString('hex')); // '3745e48...08d59ae'
// Using a custom N parameter. Must be a power of two.
const key2 = scryptSync('password', 'salt', 64, { N: 1024 });
console.log(key2.toString('hex')); // '3745e48...aa39b34'
Параметры
Тип возвращаемого значения
Buffer функция secureHeapUsed
Использование в Deno
import { secureHeapUsed } from "node:crypto";
secureHeapUsed(): SecureHeapUsageЭтот символ является нефункциональной заглушкой.
Тип возвращаемого значения
функция setEngine
Использование в Deno
import { setEngine } from "node:crypto";
setEngine(
engine: string,
flags?: number,
): voidЭтот символ является нефункциональной заглушкой.
Загружает и задаёт engine для некоторых или всех функций OpenSSL (выбор определяется флагами).
engine может быть идентификатором или путём к разделяемой библиотеке движка.
Для необязательного аргумента flags по умолчанию используется ENGINE_METHOD_ALL. flags — это битовое поле, принимающее один или несколько из следующих флагов (определённых в crypto.constants):
crypto.constants.ENGINE_METHOD_RSAcrypto.constants.ENGINE_METHOD_DSAcrypto.constants.ENGINE_METHOD_DHcrypto.constants.ENGINE_METHOD_RANDcrypto.constants.ENGINE_METHOD_ECcrypto.constants.ENGINE_METHOD_CIPHERScrypto.constants.ENGINE_METHOD_DIGESTScrypto.constants.ENGINE_METHOD_PKEY_METHScrypto.constants.ENGINE_METHOD_PKEY_ASN1_METHScrypto.constants.ENGINE_METHOD_ALLcrypto.constants.ENGINE_METHOD_NONE
Параметры
engine: string flags: number Тип возвращаемого значения
void функция setFips
Использование в Deno
import { setFips } from "node:crypto";
setFips(bool: boolean): voidВключает криптографический провайдер, совместимый с FIPS, в сборке Node.js с поддержкой FIPS. Вызывает ошибку, если режим FIPS недоступен.
Параметры
bool: boolean true для включения режима FIPS.
Тип возвращаемого значения
void функция sign
Использование в Deno
import { sign } from "node:crypto";
Вариант перегрузки 1
sign(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
key: ,
): BufferВычисляет и возвращает подпись для data с использованием заданного закрытого ключа и алгоритма. Если algorithm имеет значение null или undefined, используемый алгоритм зависит от типа ключа (в частности, для Ed25519 и Ed448).
Если key не является KeyObject, функция работает так, как если бы key был передан в createPrivateKey. Если это объект, можно передать следующие дополнительные свойства:
Если указана функция callback, эта функция использует пул потоков libuv.
Параметры
algorithm:
string
| null
| undefined
data: ArrayBufferView Тип возвращаемого значения
Buffer Вариант перегрузки 2
sign(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
key: ,
callback: (
error: Error | null,
data: Buffer,
) => void,
): voidПараметры
algorithm:
string
| null
| undefined
data: ArrayBufferView callback: (
error: Error | null,
data: Buffer,
) => void Тип возвращаемого значения
void функция timingSafeEqual
Использование в Deno
import { timingSafeEqual } from "node:crypto";
timingSafeEqual(
a: ArrayBufferView,
b: ArrayBufferView,
): booleanЭта функция сравнивает базовые байты, представляющие заданные экземпляры ArrayBuffer, TypedArray или DataView, с использованием алгоритма с постоянным временем выполнения.
Эта функция не раскрывает информацию о времени выполнения, которая могла бы позволить злоумышленнику угадать одно из значений. Она подходит для сравнения дайджестов HMAC или секретных значений, таких как файлы cookie аутентификации или URL-адреса с возможностью передачи полномочий.
a и b должны быть экземплярами Buffer, TypedArray или DataView и иметь одинаковую длину в байтах. Если длины a и b в байтах различаются, возникает ошибка.
Если хотя бы один из аргументов a и b является TypedArray, содержащим более одного байта на элемент, например Uint16Array, результат будет вычислен с учётом порядка байтов платформы.
Если оба входных значения являются Float32Array или Float64Array, эта функция может возвращать неожиданные результаты из-за кодирования чисел с плавающей запятой по стандарту IEEE 754. В частности, ни x === y, ни Object.is(x, y) не означает, что байтовые представления двух чисел с плавающей запятой x и y совпадают.
Использование crypto.timingSafeEqual не гарантирует, что окружающий код безопасен с точки зрения времени выполнения. Следует убедиться, что окружающий код не создаёт уязвимостей, связанных со временем выполнения.
Параметры
a: ArrayBufferView b: ArrayBufferView Тип возвращаемого значения
boolean функция verify
Использование в Deno
import { verify } from "node:crypto";
Вариант перегрузки 1
verify(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
signature: ArrayBufferView,
): booleanПроверяет заданную подпись для data с использованием указанного ключа и алгоритма. Если algorithm имеет значение null или undefined, используемый алгоритм зависит от типа ключа (в частности, для Ed25519 и Ed448).
Если key не является KeyObject, функция работает так, как если бы key был передан в createPublicKey. Если это объект, можно передать следующие дополнительные свойства:
Аргумент signature — это ранее вычисленная подпись для data.
Поскольку открытые ключи можно получить из закрытых ключей, для key можно передать как закрытый, так и открытый ключ.
Если указана функция callback, эта функция использует пул потоков libuv.
Параметры
algorithm:
string
| null
| undefined
data: ArrayBufferView signature: ArrayBufferView Тип возвращаемого значения
boolean Вариант перегрузки 2
verify(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
signature: ArrayBufferView,
callback: (
error: Error | null,
result: boolean,
) => void,
): voidПараметры
algorithm:
string
| null
| undefined
data: ArrayBufferView signature: ArrayBufferView callback: (
error: Error | null,
result: boolean,
) => void Тип возвращаемого значения
void интерфейс AsymmetricKeyDetails
Использование в Deno
import { type AsymmetricKeyDetails } from "node:crypto";
Свойства
modulusLength: number | undefined Размер ключа в битах (RSA, DSA).
publicExponent: bigint | undefined Открытый показатель степени (RSA).
hashAlgorithm: string | undefined Название хеш-функции (RSA-PSS).
mgf1HashAlgorithm: string | undefined Название хеш-функции, используемой MGF1 (RSA-PSS).
saltLength: number | undefined Минимальная длина соли в байтах (RSA-PSS).
divisorLength: number | undefined Размер q в битах (DSA).
namedCurve: string | undefined Название кривой (EC).
интерфейс BasePrivateKeyEncodingOptions
Использование в Deno
import { type BasePrivateKeyEncodingOptions } from "node:crypto";
Параметры типа
T extends KeyFormat Свойства
интерфейс CheckPrimeOptions
Использование в Deno
import { type CheckPrimeOptions } from "node:crypto";
Свойства
checks: number | undefined Количество вероятностных итераций проверки простоты Миллера — Рабина. Если значение равно 0 (нулю), используется такое количество проверок, которое обеспечивает вероятность ложноположительного результата не более 2**-64 для случайного ввода. Выбирая количество проверок, следует проявлять осторожность. Дополнительные сведения см. в документации OpenSSL о параметре nchecks функции BN_is_prime_ex.
интерфейс CipherCCM
Использование в Deno
import { type CipherCCM } from "node:crypto";
Методы
setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this getAuthTag(): Buffer интерфейс CipherCCMOptions
Использование в Deno
import { type CipherCCMOptions } from "node:crypto";
Свойства
authTagLength: number интерфейс CipherChaCha20Poly1305
Использование в Deno
import { type CipherChaCha20Poly1305 } from "node:crypto";
Методы
setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this getAuthTag(): Buffer интерфейс CipherChaCha20Poly1305Options
Использование в Deno
import { type CipherChaCha20Poly1305Options } from "node:crypto";
Свойства
authTagLength: number | undefined интерфейс CipherGCM
Использование в Deno
import { type CipherGCM } from "node:crypto";
Методы
setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this getAuthTag(): Buffer интерфейс CipherGCMOptions
Использование в Deno
import { type CipherGCMOptions } from "node:crypto";
Свойства
authTagLength: number | undefined интерфейс CipherInfo
Использование в Deno
import { type CipherInfo } from "node:crypto";
Свойства
name: string Название шифра.
nid: number Идентификатор nid шифра.
blockSize: number | undefined Размер блока шифра в байтах. Это свойство отсутствует, если режим — 'stream'.
ivLength: number | undefined Ожидаемая длина вектора инициализации в байтах или длина по умолчанию. Это свойство отсутствует, если шифр не использует вектор инициализации.
keyLength: number Ожидаемая длина ключа в байтах или длина по умолчанию.
Режим шифрования.
интерфейс CipherInfoOptions
Использование в Deno
import { type CipherInfoOptions } from "node:crypto";
интерфейс CipherOCB
Использование в Deno
import { type CipherOCB } from "node:crypto";
Методы
setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this getAuthTag(): Buffer интерфейс CipherOCBOptions
Использование в Deno
import { type CipherOCBOptions } from "node:crypto";
Свойства
authTagLength: number интерфейс DecipherCCM
Использование в Deno
import { type DecipherCCM } from "node:crypto";
Методы
setAuthTag(buffer: ArrayBufferView): this setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this интерфейс DecipherChaCha20Poly1305
Использование в Deno
import { type DecipherChaCha20Poly1305 } from "node:crypto";
Методы
setAuthTag(buffer: ArrayBufferView): this setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this интерфейс DecipherGCM
Использование в Deno
import { type DecipherGCM } from "node:crypto";
Методы
setAuthTag(buffer: ArrayBufferView): this setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this интерфейс DecipherOCB
Использование в Deno
import { type DecipherOCB } from "node:crypto";
Методы
setAuthTag(buffer: ArrayBufferView): this setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this интерфейс DiffieHellmanGroupConstructor
Использование в Deno
import { type DiffieHellmanGroupConstructor } from "node:crypto";
Сигнатуры вызова
(name: string): DiffieHellmanGroup Свойства
prototype: DiffieHellmanGroup интерфейс DSAKeyPairKeyObjectOptions
Использование в Deno
import { type DSAKeyPairKeyObjectOptions } from "node:crypto";
Свойства
modulusLength: number Размер ключа в битах
divisorLength: number Размер q в битах
интерфейс DSAKeyPairOptions
Использование в Deno
import { type DSAKeyPairOptions } from "node:crypto";
Параметры типа
Свойства
modulusLength: number Размер ключа в битах
divisorLength: number Размер q в битах
publicKeyEncoding: { type: "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; } интерфейс ECKeyPairKeyObjectOptions
Использование в Deno
import { type ECKeyPairKeyObjectOptions } from "node:crypto";
Свойства
namedCurve: string Название используемой кривой
paramEncoding:
"explicit"
| "named"
| undefined
Должно быть 'named' или 'explicit'. Значение по умолчанию: 'named'.
интерфейс ECKeyPairOptions
Использование в Deno
import { type ECKeyPairOptions } from "node:crypto";
Параметры типа
Свойства
publicKeyEncoding: { type: "pkcs1" | "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "sec1" | "pkcs8"; } интерфейс ED25519KeyPairKeyObjectOptions
Использование в Deno
import { type ED25519KeyPairKeyObjectOptions } from "node:crypto";
интерфейс ED25519KeyPairOptions
Использование в Deno
import { type ED25519KeyPairOptions } from "node:crypto";
Параметры типа
Свойства
publicKeyEncoding: { type: "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; } интерфейс ED448KeyPairKeyObjectOptions
Использование в Deno
import { type ED448KeyPairKeyObjectOptions } from "node:crypto";
интерфейс ED448KeyPairOptions
Использование в Deno
import { type ED448KeyPairOptions } from "node:crypto";
Параметры типа
Свойства
publicKeyEncoding: { type: "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; } интерфейс GeneratePrimeOptions
Использование в Deno
import { type GeneratePrimeOptions } from "node:crypto";
Свойства
add: LargeNumberLike | undefined rem: LargeNumberLike | undefined safe: boolean | undefined bigint: boolean | undefined интерфейс GeneratePrimeOptionsArrayBuffer
Использование в Deno
import { type GeneratePrimeOptionsArrayBuffer } from "node:crypto";
Свойства
bigint: false | undefined интерфейс GeneratePrimeOptionsBigInt
Использование в Deno
import { type GeneratePrimeOptionsBigInt } from "node:crypto";
Свойства
bigint: true интерфейс HashOptions
Использование в Deno
import { type HashOptions } from "node:crypto";
Свойства
outputLength: number | undefined Для хеш-функций XOF, таких как shake256, параметр outputLength позволяет задать желаемую длину выходных данных в байтах.
интерфейс JsonWebKey
Использование в Deno
import { type JsonWebKey } from "node:crypto";
Сигнатуры индекса
Свойства
crv: string | undefined d: string | undefined dp: string | undefined dq: string | undefined e: string | undefined k: string | undefined kty: string | undefined n: string | undefined p: string | undefined q: string | undefined qi: string | undefined x: string | undefined y: string | undefined интерфейс JsonWebKeyInput
Использование в Deno
import { type JsonWebKeyInput } from "node:crypto";
Свойства
format: "jwk" интерфейс JwkKeyExportOptions
Использование в Deno
import { type JwkKeyExportOptions } from "node:crypto";
Свойства
format: "jwk" интерфейс KeyExportOptions
Использование в Deno
import { type KeyExportOptions } from "node:crypto";
интерфейс KeyPairKeyObjectResult
Использование в Deno
import { type KeyPairKeyObjectResult } from "node:crypto";
Свойства
интерфейс KeyPairSyncResult
Использование в Deno
import { type KeyPairSyncResult } from "node:crypto";
Параметры типа
T1 extends string | Buffer T2 extends string | Buffer Свойства
интерфейс PrivateKeyInput
Использование в Deno
import { type PrivateKeyInput } from "node:crypto";
интерфейс RandomUUIDOptions
Использование в Deno
import { type RandomUUIDOptions } from "node:crypto";
Свойства
disableEntropyCache: boolean | undefined По умолчанию для повышения производительности Node.js заранее генерирует и сохраняет в кэше достаточное количество случайных данных для создания до 128 случайных UUID. Чтобы сгенерировать UUID без использования кэша, задайте для disableEntropyCache значение true.
интерфейс RSAKeyPairKeyObjectOptions
Использование в Deno
import { type RSAKeyPairKeyObjectOptions } from "node:crypto";
Свойства
modulusLength: number Размер ключа в битах
publicExponent: number | undefined Открытая экспонента
интерфейс RSAKeyPairOptions
Использование в Deno
import { type RSAKeyPairOptions } from "node:crypto";
Параметры типа
Свойства
modulusLength: number Размер ключа в битах
publicExponent: number | undefined Открытая экспонента
publicKeyEncoding: { type: "pkcs1" | "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs1" | "pkcs8"; } интерфейс RsaPrivateKey
Использование в Deno
import { type RsaPrivateKey } from "node:crypto";
интерфейс RSAPSSKeyPairKeyObjectOptions
Использование в Deno
import { type RSAPSSKeyPairKeyObjectOptions } from "node:crypto";
Свойства
modulusLength: number Размер ключа в битах
publicExponent: number | undefined Открытая экспонента
hashAlgorithm: string Название хеш-функции
mgf1HashAlgorithm: string Название хеш-функции, используемой MGF1
saltLength: string Минимальная длина соли в байтах
интерфейс RSAPSSKeyPairOptions
Использование в Deno
import { type RSAPSSKeyPairOptions } from "node:crypto";
Параметры типа
Свойства
modulusLength: number Размер ключа в битах
publicExponent: number | undefined Открытая экспонента
hashAlgorithm: string Название хеш-функции
mgf1HashAlgorithm: string Название хеш-функции, используемой MGF1
saltLength: string Минимальная длина соли в байтах
publicKeyEncoding: { type: "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; } интерфейс RsaPublicKey
Использование в Deno
import { type RsaPublicKey } from "node:crypto";
интерфейс ScryptOptions
Использование в Deno
import { type ScryptOptions } from "node:crypto";
интерфейс SecureHeapUsage
Использование в Deno
import { type SecureHeapUsage } from "node:crypto";
Свойства
total: number Общий размер выделенной защищённой кучи, заданный с помощью флага командной строки --secure-heap=n.
min: number Минимальный объём выделения из защищённой кучи, заданный с помощью флага командной строки --secure-heap-min.
used: number Общее количество байтов, выделенных в данный момент из защищённой кучи.
utilization: number Вычисленное отношение used к total выделенным байтам.
интерфейс SigningOptions
Использование в Deno
import { type SigningOptions } from "node:crypto";
Свойства
padding: number | undefined saltLength: number | undefined dsaEncoding: DSAEncoding | undefined интерфейс SignJsonWebKeyInput
Использование в Deno
import { type SignJsonWebKeyInput } from "node:crypto";
интерфейс SignKeyObjectInput
Использование в Deno
import { type SignKeyObjectInput } from "node:crypto";
интерфейс SignPrivateKeyInput
Использование в Deno
import { type SignPrivateKeyInput } from "node:crypto";
интерфейс VerifyJsonWebKeyInput
Использование в Deno
import { type VerifyJsonWebKeyInput } from "node:crypto";
интерфейс VerifyKeyObjectInput
Использование в Deno
import { type VerifyKeyObjectInput } from "node:crypto";
интерфейс VerifyPublicKeyInput
Использование в Deno
import { type VerifyPublicKeyInput } from "node:crypto";
интерфейс webcrypto.AesCbcParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.AesCtrParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.AesDerivedKeyParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.AesGcmParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.AesKeyAlgorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.AesKeyGenParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.Algorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
name: string интерфейс webcrypto.Crypto
Использование в Deno
import { webcrypto } from "node:crypto";
Импорт объекта webcrypto (import { webcrypto } from 'node:crypto') создает экземпляр класса Crypto. Crypto — это одиночный экземпляр, предоставляющий доступ к остальной части API криптографии.
Свойства
subtle: SubtleCrypto Предоставляет доступ к API SubtleCrypto.
Методы
getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T): T Генерирует криптографически стойкие случайные значения. Переданный typedArray заполняется случайными значениями, после чего возвращается ссылка на typedArray.
Переданный typedArray должен быть экземпляром NodeJS.TypedArray с целочисленным типом, то есть Float32Array и Float64Array не поддерживаются.
Если размер переданного typedArray превышает 65 536 байт, будет вызвана ошибка.
randomUUID(): UUID Генерирует UUID версии 4, соответствующий RFC 4122. UUID создается с помощью криптографического генератора псевдослучайных чисел.
интерфейс webcrypto.CryptoKey
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
algorithm: KeyAlgorithm Объект, описывающий алгоритм, для которого можно использовать ключ, а также дополнительные параметры, специфичные для алгоритма.
extractable: boolean Если значение равно true, CryptoKey можно экспортировать с помощью subtleCrypto.exportKey() или subtleCrypto.wrapKey().
Строка, указывающая, является ли ключ симметричным ('secret') или асимметричным ('private' или 'public').
Массив строк, указывающих операции, для которых можно использовать ключ.
Возможные варианты использования:
-
'encrypt'— ключ можно использовать для шифрования данных. -
'decrypt'— ключ можно использовать для расшифрования данных. -
'sign'— ключ можно использовать для создания цифровых подписей. -
'verify'— ключ можно использовать для проверки цифровых подписей. -
'deriveKey'— ключ можно использовать для получения нового ключа. -
'deriveBits'— ключ можно использовать для получения битов. -
'wrapKey'— ключ можно использовать для обертывания другого ключа. -
'unwrapKey'— ключ можно использовать для развертывания другого ключа.
Допустимые варианты использования ключа зависят от алгоритма ключа (определяется cryptokey.algorithm.name).
интерфейс webcrypto.CryptoKeyConstructor
Использование в Deno
import { webcrypto } from "node:crypto";
интерфейс webcrypto.CryptoKeyPair
Использование в Deno
import { webcrypto } from "node:crypto";
интерфейс webcrypto.EcdhKeyDeriveParams
Использование в Deno
import { webcrypto } from "node:crypto";
интерфейс webcrypto.EcdsaParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.EcKeyAlgorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.EcKeyGenParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.EcKeyImportParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.Ed448Params
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
context: BufferSource интерфейс webcrypto.HkdfParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.HmacImportParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.HmacKeyAlgorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.HmacKeyGenParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
length: number интерфейс webcrypto.JsonWebKey
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
alg: string crv: string d: string dp: string dq: string e: string ext: boolean k: string key_ops: string[] kty: string n: string oth: RsaOtherPrimesInfo[] p: string q: string qi: string use: string x: string y: string интерфейс webcrypto.KeyAlgorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
name: string интерфейс webcrypto.Pbkdf2Params
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.RsaHashedImportParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.RsaHashedKeyAlgorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.RsaHashedKeyGenParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
интерфейс webcrypto.RsaKeyAlgorithm
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
modulusLength: number интерфейс webcrypto.RsaKeyGenParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
modulusLength: number интерфейс webcrypto.RsaOaepParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
label: BufferSource интерфейс webcrypto.RsaOtherPrimesInfo
Использование в Deno
import { webcrypto } from "node:crypto";
интерфейс webcrypto.RsaPssParams
Использование в Deno
import { webcrypto } from "node:crypto";
Свойства
saltLength: number интерфейс webcrypto.SubtleCrypto
Использование в Deno
import { webcrypto } from "node:crypto";
Методы
decrypt(): Promise<ArrayBuffer> Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный key, subtle.decrypt() пытается расшифровать предоставленные данные data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим результат в открытом виде.
В настоящее время поддерживаются следующие алгоритмы:
'RSA-OAEP''AES-CTR''AES-CBC''AES-GCM'
deriveBits(): Promise<ArrayBuffer> Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный baseKey, subtle.deriveBits() пытается создать length бит. Реализация Node.js требует, чтобы значение length, если оно является числом, было кратно 8. Если length — это null, генерируется максимальное количество бит для данного алгоритма. Это допустимо для алгоритмов 'ECDH', 'X25519' и 'X448'. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим сгенерированные данные.
В настоящее время поддерживаются следующие алгоритмы:
'ECDH''X25519''X448''HKDF''PBKDF2'
deriveBits(): Promise<ArrayBuffer> deriveKey(
algorithm: ,
baseKey: CryptoKey,
derivedKeyAlgorithm: ,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKey> Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный baseKey, subtle.deriveKey() пытается создать новый based on the method and parameters inderivedKeyAlgorithm`.
Вызов subtle.deriveKey() эквивалентен вызову subtle.deriveBits() для создания необработанного ключевого материала с последующей передачей результата методу subtle.importKey() с использованием параметров deriveKeyAlgorithm, extractable и keyUsages в качестве входных данных.
В настоящее время поддерживаются следующие алгоритмы:
'ECDH''X25519''X448''HKDF''PBKDF2'
digest(
algorithm: AlgorithmIdentifier,
data: BufferSource,
): Promise<ArrayBuffer> Используя метод, указанный в algorithm, subtle.digest() пытается вычислить дайджест для data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим вычисленный дайджест.
Если algorithm передан как <string>, он должен быть одним из следующих значений:
'SHA-1''SHA-256''SHA-384''SHA-512'
Если algorithm передан как <Object>, у него должно быть свойство name, значение которого должно совпадать с одним из перечисленных выше.
encrypt(): Promise<ArrayBuffer> Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный key, subtle.encrypt() пытается зашифровать data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим результат шифрования.
В настоящее время поддерживаются следующие алгоритмы:
'RSA-OAEP''AES-CTR''AES-CBC''AES-GCM'
exportKey(
format: "jwk",
key: CryptoKey,
): Promise<JsonWebKey> Экспортирует указанный ключ в заданном формате, если он поддерживается.
Если <CryptoKey> не является извлекаемым, возвращённый промис будет отклонён.
Если format имеет значение 'pkcs8' или 'spki' и экспорт выполнен успешно, возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим экспортированные данные ключа.
Если format имеет значение 'jwk' и экспорт выполнен успешно, возвращённый промис будет выполнен с объектом JavaScript, соответствующим спецификации JSON Web Key.
generateKey(
algorithm: RsaHashedKeyGenParams | EcKeyGenParams,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKeyPair> Используя метод и параметры, указанные в algorithm, subtle.generateKey() пытается создать новый ключевой материал. В зависимости от используемого метода может быть создан один <CryptoKey> или <CryptoKeyPair>.
Поддерживаются следующие алгоритмы генерации <CryptoKeyPair> (открытого и закрытого ключей):
-
'RSASSA-PKCS1-v1_5' -
'RSA-PSS' -
'RSA-OAEP' -
'ECDSA' -
'Ed25519' -
'Ed448' -
'ECDH' -
'X25519' -
'X448'Поддерживаются следующие алгоритмы генерации<CryptoKey>(секретного ключа): -
'HMAC' -
'AES-CTR' -
'AES-CBC' -
'AES-GCM' -
'AES-KW'
generateKey(): Promise<CryptoKey> generateKey(): Promise<CryptoKeyPair | CryptoKey> importKey(
format: "jwk",
keyData: JsonWebKey,
algorithm: ,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKey> Метод subtle.importKey() пытается интерпретировать предоставленные данные keyData в указанном формате format, чтобы создать экземпляр <CryptoKey> с использованием аргументов algorithm, extractable и keyUsages. Если импорт выполнен успешно, возвращённый промис будет выполнен с созданным объектом <CryptoKey>.
При импорте ключа 'PBKDF2' значение extractable должно быть false.
importKey(
format: Exclude<KeyFormat, "jwk">,
keyData: BufferSource,
algorithm: ,
extractable: boolean,
keyUsages: KeyUsage[],
): Promise<CryptoKey> sign(): Promise<ArrayBuffer> Используя метод и параметры, заданные в algorithm, а также ключевой материал, предоставленный key, subtle.sign() пытается создать криптографическую подпись для data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим созданную подпись.
В настоящее время поддерживаются следующие алгоритмы:
'RSASSA-PKCS1-v1_5''RSA-PSS''ECDSA''Ed25519''Ed448''HMAC'
unwrapKey(
format: KeyFormat,
wrappedKey: BufferSource,
unwrappingKey: CryptoKey,
unwrapAlgorithm: ,
unwrappedKeyAlgorithm: ,
extractable: boolean,
keyUsages: KeyUsage[],
): Promise<CryptoKey> В криптографии «упаковка ключа» означает экспорт ключевого материала с последующим его шифрованием. Метод subtle.unwrapKey() пытается расшифровать упакованный ключ и создать экземпляр <CryptoKey>. Он эквивалентен вызову subtle.decrypt() для зашифрованных данных ключа (с использованием аргументов wrappedKey, unwrapAlgo и unwrappingKey), а затем передаче результата методу subtle.importKey() с использованием аргументов unwrappedKeyAlgo, extractable и keyUsages в качестве входных данных. В случае успеха возвращённый промис будет выполнен с объектом <CryptoKey>.
В настоящее время поддерживаются следующие алгоритмы упаковки:
'RSA-OAEP''AES-CTR''AES-CBC''AES-GCM''AES-KW'
Поддерживаются следующие алгоритмы для распакованных ключей:
'RSASSA-PKCS1-v1_5''RSA-PSS''RSA-OAEP''ECDSA''Ed25519''Ed448''ECDH''X25519''X448''HMAC''AES-CTR''AES-CBC''AES-GCM''AES-KW'
verify(): Promise<boolean> Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный key, subtle.verify() пытается проверить, является ли signature действительной криптографической подписью data. Возвращённый промис будет выполнен со значением true или false.
В настоящее время поддерживаются следующие алгоритмы:
'RSASSA-PKCS1-v1_5''RSA-PSS''ECDSA''Ed25519''Ed448''HMAC'
wrapKey(): Promise<ArrayBuffer> В криптографии «упаковка ключа» означает экспорт ключевого материала с последующим его шифрованием. Метод subtle.wrapKey() экспортирует ключевой материал в формате, указанном в format, а затем шифрует его с использованием метода и параметров, заданных в wrapAlgo, и ключевого материала, предоставленного wrappingKey. Это эквивалентно вызову subtle.exportKey() с аргументами format и key, а затем передаче результата методу subtle.encrypt() с использованием wrappingKey и wrapAlgo в качестве входных данных. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим зашифрованные данные ключа.
В настоящее время поддерживаются следующие алгоритмы упаковки:
'RSA-OAEP''AES-CTR''AES-CBC''AES-GCM''AES-KW'
интерфейс X25519KeyPairKeyObjectOptions
Использование в Deno
import { type X25519KeyPairKeyObjectOptions } from "node:crypto";
интерфейс X25519KeyPairOptions
Использование в Deno
import { type X25519KeyPairOptions } from "node:crypto";
Параметры типа
Свойства
publicKeyEncoding: { type: "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; } интерфейс X448KeyPairKeyObjectOptions
Использование в Deno
import { type X448KeyPairKeyObjectOptions } from "node:crypto";
интерфейс X448KeyPairOptions
Использование в Deno
import { type X448KeyPairOptions } from "node:crypto";
Параметры типа
Свойства
publicKeyEncoding: { type: "spki"; format: PubF; } privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; } интерфейс X509CheckOptions
Использование в Deno
import { type X509CheckOptions } from "node:crypto";
Свойства
subject:
"always"
| "default"
| "never"
wildcards: boolean partialWildcards: boolean multiLabelWildcards: boolean singleLabelSubdomains: boolean пространство имён constants
Использование в Deno
import { constants } from "node:crypto";
Переменные
Задаёт активный список шифров по умолчанию, используемый текущим процессом Node.js (значения разделяются двоеточиями).
Задаёт встроенный список шифров по умолчанию, используемый Node.js (значения разделяются двоеточиями).
При проверке подписи автоматически определяет длину соли для RSA_PKCS1_PSS_PADDING.
При подписании или проверке устанавливает длину соли для RSA_PKCS1_PSS_PADDING равной размеру дайджеста.
При подписании данных устанавливает для RSA_PKCS1_PSS_PADDING максимально допустимую длину соли.
Применяет несколько обходных решений для ошибок в OpenSSL. Подробнее см. в https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.
Указывает OpenSSL разрешить режим обмена ключами, не основанный на [EC]DHE, для TLS v1.3
Разрешает устаревшую небезопасную повторную договорённость между OpenSSL и клиентами или серверами без исправлений. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.
При выборе шифра пытается использовать предпочтения сервера, а не клиента. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.
Указывает OpenSSL использовать идентификатор версии DTLS_BAD_VER от Cisco.
Указывает OpenSSL включить обмен cookie.
Указывает OpenSSL добавить расширение server-hello из ранней версии черновика cryptopro.
Указывает OpenSSL отключить обходное решение уязвимости SSL 3.0/TLS 1.0, добавленное в OpenSSL 0.9.6d.
Разрешает первоначальное подключение к серверам, не поддерживающим RI.
Указывает OpenSSL отключить поддержку сжатия SSL/TLS.
Указывает OpenSSL отключить режим encrypt-then-MAC.
Указывает OpenSSL отключить повторное согласование.
Указывает OpenSSL всегда начинать новый сеанс при повторном согласовании.
Указывает OpenSSL отключить SSL v2
Указывает OpenSSL отключить SSL v3
Указывает OpenSSL отключить использование билетов RFC4507bis.
Указывает OpenSSL отключить TLS v1
Указывает OpenSSL отключить TLS v1.1
Указывает OpenSSL отключить TLS v1.2
Указывает OpenSSL отключить TLS v1.3
Указывает серверу OpenSSL отдавать приоритет ChaCha20-Poly1305, если это делает клиент. Эта опция не действует, если SSL_OP_CIPHER_SERVER_PREFERENCE не включён.
Указывает OpenSSL отключить обнаружение атак с откатом версии.
псевдоним типа BinaryLike
Использование в Deno
import { type BinaryLike } from "node:crypto";
Определение
string | ArrayBufferView псевдоним типа BinaryToTextEncoding
Использование в Deno
import { type BinaryToTextEncoding } from "node:crypto";
Определение
"base64"
| "base64url"
| "hex"
| "binary"
псевдоним типа CharacterEncoding
Использование в Deno
import { type CharacterEncoding } from "node:crypto";
Определение
"utf8"
| "utf-8"
| "utf16le"
| "utf-16le"
| "latin1"
псевдоним типа CipherCCMTypes
Использование в Deno
import { type CipherCCMTypes } from "node:crypto";
Определение
"aes-128-ccm"
| "aes-192-ccm"
| "aes-256-ccm"
псевдоним типа CipherChaCha20Poly1305Types
Использование в Deno
import { type CipherChaCha20Poly1305Types } from "node:crypto";
Определение
"chacha20-poly1305" псевдоним типа CipherGCMTypes
Использование в Deno
import { type CipherGCMTypes } from "node:crypto";
Определение
"aes-128-gcm"
| "aes-192-gcm"
| "aes-256-gcm"
псевдоним типа CipherKey
Использование в Deno
import { type CipherKey } from "node:crypto";
Определение
псевдоним типа CipherMode
Использование в Deno
import { type CipherMode } from "node:crypto";
Определение
"cbc"
| "ccm"
| "cfb"
| "ctr"
| "ecb"
| "gcm"
| "ocb"
| "ofb"
| "stream"
| "wrap"
| "xts"
псевдоним типа CipherOCBTypes
Использование в Deno
import { type CipherOCBTypes } from "node:crypto";
Определение
"aes-128-ocb"
| "aes-192-ocb"
| "aes-256-ocb"
псевдоним типа DSAEncoding
Использование в Deno
import { type DSAEncoding } from "node:crypto";
Определение
"der" | "ieee-p1363" псевдоним типа ECDHKeyFormat
Использование в Deno
import { type ECDHKeyFormat } from "node:crypto";
Определение
"compressed"
| "uncompressed"
| "hybrid"
псевдоним типа Encoding
Использование в Deno
import { type Encoding } from "node:crypto";
Определение
псевдоним типа KeyFormat
Использование в Deno
import { type KeyFormat } from "node:crypto";
Определение
"pem"
| "der"
| "jwk"
псевдоним типа KeyObjectType
Использование в Deno
import { type KeyObjectType } from "node:crypto";
Определение
"secret"
| "public"
| "private"
псевдоним типа KeyType
Использование в Deno
import { type KeyType } from "node:crypto";
Определение
"rsa"
| "rsa-pss"
| "dsa"
| "ec"
| "ed25519"
| "ed448"
| "x25519"
| "x448"
псевдоним типа LargeNumberLike
Использование в Deno
import { type LargeNumberLike } from "node:crypto";
Определение
ArrayBufferView
| SharedArrayBuffer
| ArrayBuffer
| bigint
псевдоним типа LegacyCharacterEncoding
Использование в Deno
import { type LegacyCharacterEncoding } from "node:crypto";
Определение
"ascii"
| "binary"
| "ucs2"
| "ucs-2"
псевдоним типа UUID
Использование в Deno
import { type UUID } from "node:crypto";
Определение
`${string}-${string}-${string}-${string}-${string}` псевдоним типа webcrypto.AlgorithmIdentifier
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
Algorithm | string псевдоним типа webcrypto.BigInteger
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
Uint8Array псевдоним типа webcrypto.BufferSource
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
ArrayBufferView | ArrayBuffer псевдоним типа webcrypto.HashAlgorithmIdentifier
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
псевдоним типа webcrypto.KeyFormat
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
"jwk"
| "pkcs8"
| "raw"
| "spki"
псевдоним типа webcrypto.KeyType
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
"private"
| "public"
| "secret"
псевдоним типа webcrypto.KeyUsage
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
"decrypt"
| "deriveBits"
| "deriveKey"
| "encrypt"
| "sign"
| "unwrapKey"
| "verify"
| "wrapKey"
псевдоним типа webcrypto.NamedCurve
Использование в Deno
import { webcrypto } from "node:crypto";
Определение
string переменная constants.defaultCipherList
Использование в Deno
import { constants } from "node:crypto";
Указывает активный список шифров по умолчанию, используемый текущим процессом Node.js (значения разделены двоеточиями).
Тип
string переменная constants.defaultCoreCipherList
Использование в Deno
import { constants } from "node:crypto";
Указывает встроенный список шифров по умолчанию, используемый Node.js (значения разделены двоеточиями).
Тип
string переменная constants.DH_CHECK_P_NOT_PRIME
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.DH_CHECK_P_NOT_SAFE_PRIME
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.DH_NOT_SUITABLE_GENERATOR
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.DH_UNABLE_TO_CHECK_GENERATOR
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_ALL
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_CIPHERS
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_DH
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_DIGESTS
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_DSA
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_EC
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_NONE
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_PKEY_ASN1_METHS
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_PKEY_METHS
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_RAND
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.ENGINE_METHOD_RSA
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.OPENSSL_VERSION_NUMBER
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.POINT_CONVERSION_COMPRESSED
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.POINT_CONVERSION_HYBRID
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.POINT_CONVERSION_UNCOMPRESSED
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.RSA_NO_PADDING
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.RSA_PKCS1_OAEP_PADDING
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.RSA_PKCS1_PADDING
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.RSA_PKCS1_PSS_PADDING
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.RSA_PSS_SALTLEN_AUTO
Использование в Deno
import { constants } from "node:crypto";
При проверке подписи автоматически определяет длину соли для RSA_PKCS1_PSS_PADDING.
Тип
number переменная constants.RSA_PSS_SALTLEN_DIGEST
Использование в Deno
import { constants } from "node:crypto";
При подписании или проверке подписи устанавливает длину соли для RSA_PKCS1_PSS_PADDING равной размеру дайджеста.
Тип
number переменная constants.RSA_PSS_SALTLEN_MAX_SIGN
Использование в Deno
import { constants } from "node:crypto";
При подписании данных устанавливает длину соли для RSA_PKCS1_PSS_PADDING равной максимально допустимому значению.
Тип
number переменная constants.RSA_SSLV23_PADDING
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.RSA_X931_PADDING
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.SSL_OP_ALL
Использование в Deno
import { constants } from "node:crypto";
Применяет в OpenSSL несколько обходных решений для устранения ошибок. Подробности см. на странице https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.
Тип
number переменная constants.SSL_OP_ALLOW_NO_DHE_KEX
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL разрешить режим обмена ключами для TLS v1.3, не основанный на [EC]DHE.
Тип
number переменная constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
Использование в Deno
import { constants } from "node:crypto";
Разрешает устаревшую небезопасную повторную установку соединения между OpenSSL и клиентами или серверами без необходимых исправлений. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.
Тип
number переменная constants.SSL_OP_CIPHER_SERVER_PREFERENCE
Использование в Deno
import { constants } from "node:crypto";
При выборе шифра пытается использовать предпочтения сервера вместо предпочтений клиента. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.
Тип
number переменная constants.SSL_OP_CISCO_ANYCONNECT
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL использовать идентификатор версии DTLS_BAD_VER от Cisco.
Тип
number переменная constants.SSL_OP_COOKIE_EXCHANGE
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL включить обмен cookie.
Тип
number переменная constants.SSL_OP_CRYPTOPRO_TLSEXT_BUG
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL добавить расширение server-hello из ранней версии черновика cryptopro.
Тип
number переменная constants.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить обходное решение уязвимости SSL 3.0/TLS 1.0, добавленное в OpenSSL 0.9.6d.
Тип
number переменная constants.SSL_OP_LEGACY_SERVER_CONNECT
Использование в Deno
import { constants } from "node:crypto";
Разрешает первоначальное подключение к серверам, не поддерживающим RI.
Тип
number переменная constants.SSL_OP_NO_COMPRESSION
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить поддержку сжатия SSL/TLS.
Тип
number переменная constants.SSL_OP_NO_ENCRYPT_THEN_MAC
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить режим encrypt-then-MAC.
Тип
number переменная constants.SSL_OP_NO_QUERY_MTU
Использование в Deno
import { constants } from "node:crypto";
Тип
number переменная constants.SSL_OP_NO_RENEGOTIATION
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить повторное согласование.
Тип
number переменная constants.SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL всегда начинать новый сеанс при повторном согласовании.
Тип
number переменная constants.SSL_OP_NO_SSLv2
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить SSL v2
Тип
number переменная constants.SSL_OP_NO_SSLv3
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить SSL v3
Тип
number переменная constants.SSL_OP_NO_TICKET
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить использование билетов RFC4507bis.
Тип
number переменная constants.SSL_OP_NO_TLSv1
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить TLS v1
Тип
number переменная constants.SSL_OP_NO_TLSv1_1
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить TLS v1.1
Тип
number переменная constants.SSL_OP_NO_TLSv1_2
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить TLS v1.2
Тип
number переменная constants.SSL_OP_NO_TLSv1_3
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить TLS v1.3
Тип
number переменная constants.SSL_OP_PRIORITIZE_CHACHA
Использование в Deno
import { constants } from "node:crypto";
Указывает серверу OpenSSL отдавать приоритет ChaCha20-Poly1305, если клиент предпочитает этот алгоритм. Эта опция не действует, если SSL_OP_CIPHER_SERVER_PREFERENCE не включён.
Тип
number переменная constants.SSL_OP_TLS_ROLLBACK_BUG
Использование в Deno
import { constants } from "node:crypto";
Указывает OpenSSL отключить обнаружение атак с откатом версии.
Тип
number переменная crypto
Использование в Deno
import { crypto } from "node:crypto";
Тип
globalThis extends { crypto: infer T; onmessage: any; } ? T : webcrypto.Crypto псевдоним типа DiffieHellmanGroup
Использование в Deno
import { type DiffieHellmanGroup } from "node:crypto";
Определение
Omit<DiffieHellman, "setPublicKey" | "setPrivateKey"> переменная DiffieHellmanGroup
Класс DiffieHellmanGroup принимает в качестве аргумента хорошо известную группу modp. Он работает так же, как DiffieHellman, за исключением того, что после создания его ключи нельзя изменить. Иными словами, в нём не реализованы методы setPublicKey() и setPrivateKey().
const { createDiffieHellmanGroup } = await import('node:crypto');
const dh = createDiffieHellmanGroup('modp1');
Название (например, 'modp1') взято из RFC 2412 (modp1 и 2) и RFC 3526:
$ perl -ne 'print "$1\n" if /"(modp\d+)"/' src/node_crypto_groups.h
modp1 # 768 bits
modp2 # 1024 bits
modp5 # 1536 bits
modp14 # 2048 bits
modp15 # etc.
modp16
modp17
modp18
Тип
переменная subtle
Использование в Deno
import { subtle } from "node:crypto";
Удобный псевдоним для crypto.webcrypto.subtle.
Тип
пространство имён webcrypto
Использование в Deno
import { webcrypto } from "node:crypto";
Интерфейсы
Импорт объекта webcrypto (import { webcrypto } from 'node:crypto') создаёт экземпляр класса Crypto. Crypto — это синглтон, предоставляющий доступ к остальной части API криптографии.
CryptoKeyPair — это простой объект-словарь со свойствами publicKey и privateKey, представляющий пару асимметричных ключей.
Псевдонимы типов
переменная webcrypto
Реализация стандарта Web Crypto API.
Подробности см. в документации по Web Crypto API.
Тип
переменная fips
Использование в Deno
import { fips } from "node:crypto";
начиная с версии v10.0.0
Тип
boolean
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/crypto