ObjectPKey
PKey is ingebouwdcryptoEen object dat door de module wordt geleverd en dat een paar sleutels vertegenwoordigt: een publieke sleutel en een privésleutel. PKey ondersteunt het genereren van sleutels, het laden van sleutels, het opslaan van sleutels en het beheren van het coderingsproces in JS
Het PKey-object ondersteunt meerdere versleutelingsalgoritmen, zoals RSA, EC of Ed25519, enz. Elk versleutelingsalgoritme heeft zijn eigen unieke manier om sleutels te genereren en te beheren. Het PKey-object bevat ook attributen zoals de algoritmenaam waartoe de sleutel behoort en de sleutellengte.
Hieronder volgen algemene methoden van PKey en hun voorbeelden:
- genererenKey(alg | bits): Genereer een paar sleutels, alg specificeert het sleutelalgoritme, bits specificeert de sleutellengte en de standaardwaarde is 2048.
1
2
3var crypto = require('crypto');
var pkey = crypto.generateKey(2048);
- from(value[, wachtwoord]): Laad de sleutel in DER- of PEM-indeling in het PKey-object.
1
2
3var crypto = require('crypto');
var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
- publicKey: haal de openbare sleutel van de huidige sleutel op.
1
2
3
4var crypto = require('crypto');
var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
var pubkey = pkey.publicKey;
- equals(other): Bepaal of twee publieke en private sleutels gelijk zijn.
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
erfenis relatie
Constructeur
PKey
Construeer PKey van sleutel in DER-formaat
1
2new PKey(Buffer DerKey,
String password = "");
Oproepparameters:
- DerKey:Buffer, toets in DER-formaat
- password: String, decoderingswachtwoord
Construeer PKey van sleutel in PEM-formaat
1
2new PKey(String pemKey,
String password = "");
Oproepparameters:
- pemKey: String, sleutel in PEM-formaat
- password: String, decoderingswachtwoord
Construeer PKey van sleutel in JSON-indeling
1new PKey(Object jsonKey);
Oproepparameters:
- jsonKey: Object, sleutel in JSON-indeling
Het formaat van jsonKey ondersteunt de volgende vier typen RSA-privésleutels:
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=="
}
Openbare RSA-sleutel:
1
2
3
4
5{
"kty": "RSA",
"n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=",
"e": "AQAB"
}
EC-privésleutel:
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"
}
Publieke sleutel van de EC:
1
2
3
4
5
6{
"kty": "EC",
"crv": "P-521",
"x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL",
"y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU"
}
statische functie
from
Laad een sleutel in DER-formaat
1
2static PKey PKey.from(Buffer DerKey,
String password = "");
Oproepparameters:
- DerKey:Buffer, toets in DER-formaat
- password: String, decoderingswachtwoord
Resultaten retourneren:
- PKey, retourneert een object dat de sleutel bevat
Laad een sleutel in PEM-formaat
1
2static PKey PKey.from(String pemKey,
String password = "");
Oproepparameters:
- pemKey: String, sleutel in PEM-formaat
- password: String, decoderingswachtwoord
Resultaten retourneren:
- PKey, retourneert een object dat de sleutel bevat
Laad een sleutel in JSON-indeling
1static PKey PKey.from(Object jsonKey);
Oproepparameters:
- jsonKey: Object, sleutel in JSON-indeling
Resultaten retourneren:
- PKey, retourneert een object dat de sleutel bevat
Het formaat van jsonKey ondersteunt de volgende vier typen RSA-privésleutels:
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=="
}
Openbare RSA-sleutel:
1
2
3
4
5{
"kty": "RSA",
"n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=",
"e": "AQAB"
}
EC-privésleutel:
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"
}
Publieke sleutel van de EC:
1
2
3
4
5
6{
"kty": "EC",
"crv": "P-521",
"x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL",
"y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU"
}
eigenschappen van leden
name
String, retourneert de huidige algoritmenaam
1readonly String PKey.name;
keySize
Geheel getal, retourneert de huidige wachtwoordlengte van het algoritme in bits
1readonly Integer PKey.keySize;
alg
String, retourneert en stelt het huidige objecthandtekeningalgoritme in
1readonly String PKey.alg;
publicKey
PKey, retourneert de openbare sleutel van de huidige sleutel
1readonly PKey PKey.publicKey;
Resultaten retourneren:
- de publieke sleutel van de huidige sleutel
lid functie
isPrivate
Vraag of de huidige sleutel een privésleutel is
1Boolean PKey.isPrivate();
Resultaten retourneren:
- Boolean, is True en vertegenwoordigt de privésleutel
clone
kopieer de huidige sleutel
1PKey PKey.clone();
Resultaten retourneren:
- PKey, het kopieerobject van de huidige sleutel
pem
Retourneert de PEM-indelingscodering van de huidige sleutel
1String PKey.pem();
Resultaten retourneren:
- String, PEM-formaatcodering van de huidige sleutel
der
Retourneert de DER-indelingscodering van de huidige sleutel
1Buffer PKey.der();
Resultaten retourneren:
- Buffer, de DER-formaatcodering van de huidige sleutel
json
Retourneert de jwt-indelingscodering van de huidige sleutel
1Object PKey.json(Object opts = {});
Oproepparameters:
- opts: Object, exportopties opgeven
Resultaten retourneren:
- Object, de jwt-indelingscodering van de huidige sleutel
opts ondersteunt de volgende parameters:
1
2
3{
compress: false // specify whether to output public key in compressed form
}
Curven die compressie ondersteunen zijn: secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2
equals
Vergelijk twee publieke/privésleutels om te zien of ze hetzelfde zijn
1Boolean PKey.equals(object key);
Oproepparameters:
- key:object, geef de openbare/privésleutel van de andere partij op
Resultaten retourneren:
- Boolean, als ze hetzelfde zijn, retourneert u waar
encrypt
Versleutel gegevens met behulp van de huidige openbare sleutel voor algoritmecodering
1Buffer PKey.encrypt(Buffer data) async;
Oproepparameters:
- data:Buffer, geef de gegevens op die moeten worden gecodeerd
Resultaten retourneren:
- Buffer, retourneert de gecodeerde gegevens
decrypt
Decodeer gegevens met behulp van de huidige privésleutel van het algoritme
1Buffer PKey.decrypt(Buffer data) async;
Oproepparameters:
- data:Buffer, specificeer de gegevens die moeten worden gedecodeerd
Resultaten retourneren:
- Buffer, retourneert de gedecodeerde gegevens
sign
Onderteken gegevens met behulp van de huidige cryptografische privésleutel van het algoritme
1
2Buffer PKey.sign(Buffer data,
Object opts = {}) async;
Oproepparameters:
- data:Buffer, specificeer de gegevens die moeten worden ondertekend. Als het algoritme RSA is, moet de invoerparameter worden uitgevoerd met het algoritme dat is opgegeven door alg.hash
- opts: Object, handtekeningopties opgeven
Resultaten retourneren:
- Buffer, retourneer de ondertekende gegevens
opts ondersteunt de volgende parameters:
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
Verifieer gegevens met behulp van de huidige cryptografische openbare sleutel van het algoritme
1
2
3Boolean PKey.verify(Buffer data,
Buffer sign,
Object opts = {}) async;
Oproepparameters:
- data:Buffer, specificeer de gegevens die moeten worden geverifieerd
- sign:Buffer, geef de handtekening op die moet worden geverifieerd
- opts: Object, verificatieopties opgeven
Resultaten retourneren:
- Boolean, retourneert het geverifieerde resultaat
opts ondersteunt de volgende parameters:
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
Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.
1String PKey.toString();
Resultaten retourneren:
- String, retourneert de tekenreeksrepresentatie van het object
toJSON
Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.
1Value PKey.toJSON(String key = "");
Oproepparameters:
- key: Tekenreeks, niet gebruikt
Resultaten retourneren:
- Value, retourneert een waarde die JSON-serialiseerbaar bevat