Objet objet intégré

objetPKey

PKey est intégrécryptoUn objet fourni par le module qui représente une paire de clés : une clé publique et une clé privée. PKey prend en charge la génération de clés, le chargement de clés, le stockage de clés et la gestion du processus de cryptage dans JS

L'objet PKey prend en charge plusieurs algorithmes de chiffrement, tels que RSA, EC ou Ed25519, et chaque algorithme de chiffrement possède ses propres méthodes uniques de génération et de gestion de clés. L'objet PKey contient également des attributs tels que le nom de l'algorithme auquel appartient la clé et la longueur de la clé.

Voici les méthodes courantes de PKey et leurs exemples :

  1. generateKey(alg | bits) : génère une paire de clés, alg spécifie l'algorithme de clé, bits spécifie la longueur de clé, la valeur par défaut est 2048.
1 2 3
var crypto = require('crypto'); var pkey = crypto.generateKey(2048);
  1. from(value[, password]) : charge une clé au format DER ou PEM dans un objet PKey.
1 2 3
var crypto = require('crypto'); var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
  1. publicKey : Récupère la clé publique de la clé actuelle.
1 2 3 4
var crypto = require('crypto'); var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem')); var pubkey = pkey.publicKey;
  1. equals(other) : détermine si les deux clés publique et privée sont égales.
1 2 3 4 5
var crypto = require('crypto'); var pkey1 = crypto.PKey.from(fs.readFile('rsa.private.pem')); var pkey2 = crypto.PKey.from(fs.readFile('rsa.public.pem')); console.log(pkey1.equals(pkey2)); // output: true

relation d'héritage

Constructeur

PKey

Construire une PKey à partir d'une clé au format DER

1 2
new PKey(Buffer DerKey, String password = "");

Paramètres d'appel :

  • DerKey:Buffer, la clé au format DER
  • password: Chaîne, mot de passe déchiffré

Construire une PKey à partir d'une clé au format PEM

1 2
new PKey(String pemKey, String password = "");

Paramètres d'appel :

  • pemKey: Chaîne, clé au format PEM
  • password: Chaîne, mot de passe déchiffré

Construire une PKey à partir d'une clé au format JSON

1
new PKey(Object jsonKey);

Paramètres d'appel :

  • jsonKey: Objet, clé au format JSON

Le format de jsonKey prend en charge les quatre types de clé privée RSA suivants :

1 2 3 4 5 6 7 8 9 10 11
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB", "d": "agN2O9NxMHL1MTMi75WfL9Pxvl-KWXKqZSF6mjzAsF9iKI8euyHIXYFepzU8kual1RsjDhCnzvWqFvZplW8lXqrHf_P-rS_9Y4gBUw6pjnI_DnFIRwWHRvrUHHSCfWOdTCIKdOTkgLZuGFuhEY3RMIW0WSYejjLtftwy0RVxAzk=", "p": "6a4G1qmfwWmn1biigN7IVFlkbLf9oVe6g7rOmHxI-hn1GRxKDSVuAUrmR1IhuAnca9M0y7SD-7TUs6wjOxWxaw==", "q": "5ofkxFKdPBD0CQHMb9q13AMHUVe0rJ-hSjqqIBrmqApUOneyAcMV76M0QyIQnI2p3POa4Qu_7XChDwRVl7LlDQ==", "dp": "2mXGiGwCHl8j-FBWuID-1C6z-BRB3MBEVoeKPOOzxOPruatB3mWEGXsqG7A8SWgV9URxTI2K6P3J6Z7RUpBkvw==", "dq": "oagn5vfb5NQqnOpS9xkSsD67cfIj821ZSFlNFYhnuOzNVda7z_qCtnHm4zDPH0lEFXoKYMfBhfqWJpaugttjPQ==", "qi": "dqEQgxNmOVFrF4s776hTqeC6oEDila8EvpVb2F2ZvwAOLjCQ66OiAZK1BiYGHqUy0NeqNmtlsLSuBEZQZvqZwg==" }

Clé publique RSA :

1 2 3 4 5
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB" }

Clé privée CE :

1 2 3 4 5 6 7
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU", "d": "AfkIbUHXfW41njdpoKuqqKludcoLJS8D_oMEwkj-GVaXFNKccIoF5iKGu2c69kNDjo83R_7wyGlfRczsklkik1ST" }

Clé publique CE :

1 2 3 4 5 6
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" }

fonction statique

from

Charger une clé au format DER

1 2
static PKey PKey.from(Buffer DerKey, String password = "");

Paramètres d'appel :

  • DerKey:Buffer, la clé au format DER
  • password: Chaîne, mot de passe déchiffré

résultat de retour :

  • PKey, renvoie un objet contenant la clé

Charger une clé au format PEM

1 2
static PKey PKey.from(String pemKey, String password = "");

Paramètres d'appel :

  • pemKey: Chaîne, clé au format PEM
  • password: Chaîne, mot de passe déchiffré

résultat de retour :

  • PKey, renvoie un objet contenant la clé

Charger une clé au format JSON

1
static PKey PKey.from(Object jsonKey);

Paramètres d'appel :

  • jsonKey: Objet, clé au format JSON

résultat de retour :

  • PKey, renvoie un objet contenant la clé

Le format de jsonKey prend en charge les quatre types de clé privée RSA suivants :

1 2 3 4 5 6 7 8 9 10 11
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB", "d": "agN2O9NxMHL1MTMi75WfL9Pxvl-KWXKqZSF6mjzAsF9iKI8euyHIXYFepzU8kual1RsjDhCnzvWqFvZplW8lXqrHf_P-rS_9Y4gBUw6pjnI_DnFIRwWHRvrUHHSCfWOdTCIKdOTkgLZuGFuhEY3RMIW0WSYejjLtftwy0RVxAzk=", "p": "6a4G1qmfwWmn1biigN7IVFlkbLf9oVe6g7rOmHxI-hn1GRxKDSVuAUrmR1IhuAnca9M0y7SD-7TUs6wjOxWxaw==", "q": "5ofkxFKdPBD0CQHMb9q13AMHUVe0rJ-hSjqqIBrmqApUOneyAcMV76M0QyIQnI2p3POa4Qu_7XChDwRVl7LlDQ==", "dp": "2mXGiGwCHl8j-FBWuID-1C6z-BRB3MBEVoeKPOOzxOPruatB3mWEGXsqG7A8SWgV9URxTI2K6P3J6Z7RUpBkvw==", "dq": "oagn5vfb5NQqnOpS9xkSsD67cfIj821ZSFlNFYhnuOzNVda7z_qCtnHm4zDPH0lEFXoKYMfBhfqWJpaugttjPQ==", "qi": "dqEQgxNmOVFrF4s776hTqeC6oEDila8EvpVb2F2ZvwAOLjCQ66OiAZK1BiYGHqUy0NeqNmtlsLSuBEZQZvqZwg==" }

Clé publique RSA :

1 2 3 4 5
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB" }

Clé privée CE :

1 2 3 4 5 6 7
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU", "d": "AfkIbUHXfW41njdpoKuqqKludcoLJS8D_oMEwkj-GVaXFNKccIoF5iKGu2c69kNDjo83R_7wyGlfRczsklkik1ST" }

Clé publique CE :

1 2 3 4 5 6
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" }

attribut de membre

name

Chaîne, renvoie le nom de l'algorithme actuel

1
readonly String PKey.name;

keySize

Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits

1
readonly Integer PKey.keySize;

alg

Chaîne, renvoie et définit l'algorithme de signature de l'objet courant

1
String PKey.alg;

publicKey

PKey, retourne la clé publique de la clé courante

1
readonly PKey PKey.publicKey;

résultat de retour :

  • la clé publique de la clé courante

fonction membre

isPrivate

Demander si la clé actuelle est une clé privée

1
Boolean PKey.isPrivate();

résultat de retour :

  • Boolean, si True signifie clé privée

clone

copier la clé actuelle

1
PKey PKey.clone();

résultat de retour :

  • PKey, l'objet de copie de la clé actuelle

pem

Renvoie l'encodage au format PEM de la clé courante

1
String PKey.pem();

résultat de retour :

  • String, l'encodage au format PEM de la clé courante

der

Renvoie l'encodage au format DER de la clé actuelle

1
Buffer PKey.der();

résultat de retour :

  • Buffer, l'encodage au format DER de la clé courante

json

Renvoie l'encodage au format jwt de la clé actuelle

1
Object PKey.json(Object opts = {});

Paramètres d'appel :

  • opts: Objet, spécifie les options d'exportation

résultat de retour :

  • Object, l'encodage au format jwt de la clé courante

opts prend en charge les paramètres suivants :

1 2 3
{ compress: false, 指定签名以压缩方式输出公钥 }

Les courbes qui prennent en charge la compression sont : secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2


equals

Comparer si deux clés publiques/privées sont identiques

1
Boolean PKey.equals(PKey key);

Paramètres d'appel :

  • key: PKey, spécifiez la clé publique/privée de l'autre partie

résultat de retour :

  • Boolean, renvoie true si le même

encrypt

Crypter les données à l'aide de la clé publique cryptographique de l'algorithme actuel

1
Buffer PKey.encrypt(Buffer data) async;

Paramètres d'appel :

  • data:Buffer, spécifie les données à chiffrer

résultat de retour :

  • Buffer, renvoie les données chiffrées

decrypt

Déchiffrer les données à l'aide de la clé privée cryptographique de l'algorithme actuel

1
Buffer PKey.decrypt(Buffer data) async;

Paramètres d'appel :

  • data:Buffer, précise les données à déchiffrer

résultat de retour :

  • Buffer, renvoie les données déchiffrées

sign

Signer les données à l'aide de la clé privée cryptographique de l'algorithme actuel

1 2
Buffer PKey.sign(Buffer data, Object opts = {}) async;

Paramètres d'appel :

  • data:Buffer, précise les données à signer
  • opts: Objet, spécifie les options de signature

résultat de retour :

  • Buffer, renvoie les données signées

opts prend en charge les paramètres suivants :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{ alg: 0, 指定签名的 hash 算法, 仅在 RSA 时有效, 缺省为 0. 支持算法: 0 = NONE, 1 = MD5, 2 = SHA1, 3 = SHA224, 4 = SHA256, 5 = SHA384, 6 = SHA512, 7 = RIPEMD160 to: pk, 指定验证方公钥, 仅在 ecsdsa 或 sm2 时有效 format: "der", 指定签名格式, 可选为 der 和 raw, 缺省为 der recoverable: false 指定返回可恢复签名, 仅在 secp256k1 有效 }

verify

Vérifier les données à l'aide de la clé publique cryptographique de l'algorithme actuel

1 2 3
Boolean PKey.verify(Buffer data, Buffer sign, Object opts = {}) async;

Paramètres d'appel :

  • data:Buffer, en précisant les données à valider
  • sign:Buffer, en précisant la signature à vérifier
  • opts: Objet, spécifie les options d'authentification

résultat de retour :

  • Boolean, renvoie le résultat vérifié

opts prend en charge les paramètres suivants :

1 2 3 4 5 6 7 8 9 10 11 12 13 14
{ alg: 0, 指定签名的 hash 算法, 仅在 RSA 时有效, 缺省为 0. 支持算法: 0 = NONE, 1 = MD5, 2 = SHA1, 3 = SHA224, 4 = SHA256, 5 = SHA384, 6 = SHA512, 7 = RIPEMD160 to: pk, 指定验证方公钥, 仅在 ecsdsa 或 sm2 时有效 format: "der", 指定签名格式, 可选为 der 和 raw, 缺省为 der }

toString

Renvoie la représentation sous forme de chaîne de l'objet, renvoie généralement "[Native Object]", l'objet peut être réimplémenté selon ses propres caractéristiques

1
String PKey.toString();

résultat de retour :

  • String, renvoie une représentation sous forme de chaîne de l'objet

toJSON

Renvoie la représentation au format JSON de l'objet, renvoie généralement une collection de propriétés lisibles définies par l'objet

1
Value PKey.toJSON(String key = "");

Paramètres d'appel :

  • key: Chaîne, non utilisée

résultat de retour :

  • Value, qui renvoie une valeur sérialisable JSON