objectP Sleutel
PKey is ingebouwdcryptoEen object geleverd door de module dat een sleutelpaar vertegenwoordigt: een publieke sleutel en een private 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, en elk versleutelingsalgoritme heeft zijn eigen unieke methoden voor het genereren en beheren van sleutels. Het PKey-object bevat ook attributen zoals de naam van het algoritme waartoe de sleutel behoort en de lengte van de sleutel.
Hieronder volgen algemene methoden van PKey en hun voorbeelden:
- createKey(alg | bits): Genereer een paar sleutels, alg specificeert het sleutelalgoritme, bits specificeert de sleutellengte, de standaardwaarde is 2048.
1
2
3var crypto = require('crypto');
var pkey = crypto.generateKey(2048);
- from(value[, password]): Laad een sleutel in DER- of PEM-indeling in een PKey-object.
1
2
3var crypto = require('crypto');
var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
- publicKey: Verkrijg de openbare sleutel van de huidige sleutel.
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 de 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 een PKey uit een sleutel in DER-formaat
1
2new PKey(Buffer DerKey,
String password = "");
Oproepparameters:
- DerKey:Buffer, de sleutel in DER-indeling
- password: Tekenreeks, gedecodeerd wachtwoord
Construeer een PKey uit een sleutel in PEM-indeling
1
2new PKey(String pemKey,
String password = "");
Oproepparameters:
- pemKey: Tekenreeks, sleutel in PEM-indeling
- password: Tekenreeks, gedecodeerd wachtwoord
Maak een PKey van een sleutel in JSON-formaat
1new PKey(Object jsonKey);
Oproepparameters:
- jsonKey: Object, sleutel in JSON-indeling
Het formaat van jsonKey ondersteunt de volgende vier typen RSA-privésleutel:
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=="
}
RSA openbare sleutel:
1
2
3
4
5{
"kty": "RSA",
"n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=",
"e": "AQAB"
}
EG-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"
}
EC openbare sleutel:
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-indeling
1
2static PKey PKey.from(Buffer DerKey,
String password = "");
Oproepparameters:
- DerKey:Buffer, de sleutel in DER-indeling
- password: Tekenreeks, gedecodeerd wachtwoord
retour resultaat:
- PKey, retourneert een object dat de sleutel bevat
Laad een sleutel in PEM-indeling
1
2static PKey PKey.from(String pemKey,
String password = "");
Oproepparameters:
- pemKey: Tekenreeks, sleutel in PEM-indeling
- password: Tekenreeks, gedecodeerd wachtwoord
retour resultaat:
- 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
retour resultaat:
- PKey, retourneert een object dat de sleutel bevat
Het formaat van jsonKey ondersteunt de volgende vier typen RSA-privésleutel:
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=="
}
RSA openbare sleutel:
1
2
3
4
5{
"kty": "RSA",
"n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=",
"e": "AQAB"
}
EG-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"
}
EC openbare sleutel:
1
2
3
4
5
6{
"kty": "EC",
"crv": "P-521",
"x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL",
"y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU"
}
lid attribuut
name
Tekenreeks, retourneert de naam van het huidige algoritme
1readonly String PKey.name;
keySize
Integer, retourneert de huidige wachtwoordlengte van het algoritme in bits
1readonly Integer PKey.keySize;
alg
String, retourneert en stelt het handtekeningalgoritme van het huidige object in
1String PKey.alg;
publicKey
PKey, retourneert de openbare sleutel van de huidige sleutel
1readonly PKey PKey.publicKey;
retour resultaat:
- de openbare sleutel van de huidige sleutel
lid functie
isPrivate
Vraag of de huidige sleutel een persoonlijke sleutel is
1Boolean PKey.isPrivate();
retour resultaat:
- Boolean, als True persoonlijke sleutel betekent
clone
kopieer de huidige sleutel
1PKey PKey.clone();
retour resultaat:
- PKey, het kopieerobject van de huidige sleutel
pem
Retourneert de codering in PEM-indeling van de huidige sleutel
1String PKey.pem();
retour resultaat:
- String, de codering in PEM-indeling van de huidige sleutel
der
Retourneert de DER-indelingscodering van de huidige sleutel
1Buffer PKey.der();
retour resultaat:
- 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, specificeert exportopties
retour resultaat:
- Object, de codering in jwt-indeling van de huidige sleutel
opts ondersteunt de volgende parameters:
1
2
3{
compress: false, 指定签名以压缩方式输出公钥
}
De curven die compressie ondersteunen zijn: secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2
equals
Vergelijk of twee publieke/private sleutels hetzelfde zijn
1Boolean PKey.equals(PKey key);
Oproepparameters:
- key: PKey, geef de publieke/private sleutel van de andere partij op
retour resultaat:
- Boolean, geef waar terug als hetzelfde
encrypt
Versleutel gegevens met behulp van de huidige cryptografische openbare sleutel van het algoritme
1Buffer PKey.encrypt(Buffer data) async;
Oproepparameters:
- data:Buffer, geeft aan welke gegevens moeten worden gecodeerd
retour resultaat:
- Buffer, retourneert de versleutelde gegevens
decrypt
Ontsleutel de gegevens met behulp van de cryptografische privésleutel van het huidige algoritme
1Buffer PKey.decrypt(Buffer data) async;
Oproepparameters:
- data:Buffer, specificeert de gegevens die moeten worden gedecodeerd
retour resultaat:
- 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, specificeert de te ondertekenen gegevens
- opts: Object, specificeert handtekeningopties
retour resultaat:
- Buffer, retourneert de ondertekende gegevens
opts ondersteunt de volgende parameters:
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
Verifieer gegevens met behulp van de cryptografische openbare sleutel van het huidige algoritme
1
2
3Boolean PKey.verify(Buffer data,
Buffer sign,
Object opts = {}) async;
Oproepparameters:
- data:Buffer, waarbij de gegevens worden opgegeven die moeten worden gevalideerd
- sign:Buffer, met vermelding van de handtekening die moet worden geverifieerd
- opts: Object, specificeert de authenticatie-opties
retour resultaat:
- Boolean, retourneert het geverifieerde resultaat
opts ondersteunt de volgende parameters:
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
Retourneert de tekenreeksrepresentatie van het object, retourneert over het algemeen "[Native Object]", het object kan opnieuw worden geïmplementeerd volgens zijn eigen kenmerken
1String PKey.toString();
retour resultaat:
- String, retourneert een tekenreeksrepresentatie van het object
toJSON
Retourneert de weergave in JSON-indeling van het object, retourneert over het algemeen een verzameling leesbare eigenschappen die door het object zijn gedefinieerd
1Value PKey.toJSON(String key = "");
Oproepparameters:
- key: String, niet gebruikt
retour resultaat:
- Value, die een JSON-serialiseerbare waarde retourneert