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 :
- 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
3var crypto = require('crypto');
var pkey = crypto.generateKey(2048);
- from(value[, password]) : Chargez la clé au format DER ou PEM dans l'objet PKey.
1
2
3var crypto = require('crypto');
var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
- publicKey : récupère la clé publique de la clé actuelle.
1
2
3
4var crypto = require('crypto');
var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
var pubkey = pkey.publicKey;
- equals(other) : Déterminez si deux clés publique et privée sont égales.
1
2
3
4
5var 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
2new 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
2new 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
1new 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
2static 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
2static 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
1static 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
1readonly String PKey.name;
keySize
Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits
1readonly Integer PKey.keySize;
alg
String, renvoie et définit l'algorithme de signature d'objet actuel
1readonly String PKey.alg;
publicKey
PKey, renvoie la clé publique de la clé actuelle
1readonly 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
1Boolean PKey.isPrivate();
Résultats de retour :
- Boolean, est True et représente la clé privée
clone
copier la clé actuelle
1PKey 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
1String 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
1Buffer 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
1Object 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
1Boolean 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
1Buffer 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
1Buffer 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
2Buffer 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
3Boolean 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.
1String 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.
1Value 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