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 :
- 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
3var crypto = require('crypto');
var pkey = crypto.generateKey(2048);
- from(value[, password]) : charge une clé au format DER ou PEM dans un 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étermine si les 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 une PKey à partir d'une clé au format DER
1
2new 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
2new 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
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é 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
2static 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
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 déchiffré
résultat 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é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
1readonly String PKey.name;
keySize
Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits
1readonly Integer PKey.keySize;
alg
Chaîne, renvoie et définit l'algorithme de signature de l'objet courant
1String PKey.alg;
publicKey
PKey, retourne la clé publique de la clé courante
1readonly 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
1Boolean PKey.isPrivate();
résultat de retour :
- Boolean, si True signifie clé privée
clone
copier la clé actuelle
1PKey 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
1String 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
1Buffer 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
1Object 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
1Boolean 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
1Buffer 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
1Buffer 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
2Buffer 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
3Boolean 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
1String 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
1Value 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