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 des 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, etc. Chaque algorithme de chiffrement a sa propre manière de générer et de gérer les 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 la clé et la valeur par défaut est 2048.
1 2 3
var crypto = require('crypto'); var pkey = crypto.generateKey(2048);
  1. from(value[, password]) : Chargez la clé au format DER ou PEM dans l'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éterminez si 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 PKey à partir d'une clé au format DER

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

Paramètres d'appel :

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

Construire 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 de décryptage

Construire 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és privées 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 EC :

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, clé au format DER
  • password: Chaîne, mot de passe de décryptage

Résultats 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 de décryptage

Résultats 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ésultats de retour :

  • PKey, renvoie un objet contenant la clé

Le format de jsonKey prend en charge les quatre types de clés privées 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 EC :

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" }

propriétés des membres

name

String, 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

String, renvoie et définit l'algorithme de signature d'objet actuel

1
readonly String PKey.alg;

publicKey

PKey, renvoie la clé publique de la clé actuelle

1
readonly PKey PKey.publicKey;

Résultats de retour :

  • la clé publique de la clé actuelle

fonction membre

isPrivate

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

1
Boolean PKey.isPrivate();

Résultats de retour :

  • Boolean, est True et représente la clé privée

clone

copier la clé actuelle

1
PKey PKey.clone();

Résultats de retour :

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

pem

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

1
String PKey.pem();

Résultats de retour :

  • String, encodage au format PEM de la clé actuelle

der

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

1
Buffer PKey.der();

Résultats de retour :

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

json

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

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

Paramètres d'appel :

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

Résultats de retour :

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

opts prend en charge les paramètres suivants :

1 2 3
{ compress: false // specify whether to output public key in compressed form }

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


equals

Comparez deux clés publiques/privées pour voir si elles sont identiques

1
Boolean PKey.equals(object key);

Paramètres d'appel :

  • key:object, précisez la clé publique/privée de l'autre partie

Résultats de retour :

  • Boolean, s'ils sont identiques, renvoie vrai

encrypt

Chiffrer les données à l'aide de la clé publique de chiffrement de l'algorithme actuel

1
Buffer PKey.encrypt(Buffer data) async;

Paramètres d'appel :

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

Résultats de retour :

  • Buffer, renvoie les données chiffrées

decrypt

Décrypter les données à l'aide de la clé privée du mot de passe de l'algorithme actuel

1
Buffer PKey.decrypt(Buffer data) async;

Paramètres d'appel :

  • data:Buffer, précisez les données à décrypter

Résultats de retour :

  • Buffer, renvoie les données décrypté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, spécifiez les données à signer. Lorsque l'algorithme est RSA, le paramètre d'entrée doit être exécuté avec l'algorithme spécifié par alg.hash
  • opts: Objet, spécifiez les options de signature

Résultats de retour :

  • Buffer, renvoie les données signées

opts prend en charge les paramètres suivants :

1 2 3 4 5
{ alg: 0, // specify the hash algorithm for signing, only valid for RSA, default is 0. Supported algorithms: 0=NONE,1=MD5,2=SHA1,3=SHA224,4=SHA256,5=SHA384,6=SHA512,7=RIPEMD160 format: "der", // specify the signature format, default is der, supported formats: der, raw recoverable: false // specify whether to return a recoverable signature, only valid for 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, précisez les données à vérifier
  • sign:Buffer, précisez la signature à vérifier
  • opts: Objet, spécifiez les options de vérification

Résultats de retour :

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

opts prend en charge les paramètres suivants :

1 2 3 4
{ alg: 0, // specify the hash algorithm for signing, only valid for RSA, default is 0. Supported algorithms: 0=NONE,1=MD5,2=SHA1,3=SHA224,4=SHA256,5=SHA384,6=SHA512,7=RIPEMD160 format: "der" // specify the signature format, default is der, supported formats: der, raw }

toString

Renvoie la représentation sous forme de chaîne de l'objet. Généralement, "[Native Object]" est renvoyé. L'objet peut être réimplémenté en fonction de ses propres caractéristiques.

1
String PKey.toString();

Résultats de retour :

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

toJSON

Renvoie une représentation au format JSON de l'objet, renvoyant 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ésultats de retour :

  • Value, renvoie une valeur contenant du JSON sérialisable