Object ingebouwd object

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:

  1. createKey(alg | bits): Genereer een paar sleutels, alg specificeert het sleutelalgoritme, bits specificeert de sleutellengte, de standaardwaarde is 2048.
1 2 3
var crypto = require('crypto'); var pkey = crypto.generateKey(2048);
  1. from(value[, password]): Laad een sleutel in DER- of PEM-indeling in een PKey-object.
1 2 3
var crypto = require('crypto'); var pkey = crypto.PKey.from(fs.readFile('rsa.private.pem'));
  1. publicKey: Verkrijg de openbare sleutel van de huidige sleutel.
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): Bepaal of de twee publieke en private sleutels gelijk zijn.
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

erfenis relatie

Constructeur

PKey

Construeer een PKey uit een sleutel in DER-formaat

1 2
new 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 2
new 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

1
new 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 2
static 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 2
static 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

1
static 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

1
readonly String PKey.name;

keySize

Integer, retourneert de huidige wachtwoordlengte van het algoritme in bits

1
readonly Integer PKey.keySize;

alg

String, retourneert en stelt het handtekeningalgoritme van het huidige object in

1
String PKey.alg;

publicKey

PKey, retourneert de openbare sleutel van de huidige sleutel

1
readonly PKey PKey.publicKey;

retour resultaat:

  • de openbare sleutel van de huidige sleutel

lid functie

isPrivate

Vraag of de huidige sleutel een persoonlijke sleutel is

1
Boolean PKey.isPrivate();

retour resultaat:

  • Boolean, als True persoonlijke sleutel betekent

clone

kopieer de huidige sleutel

1
PKey PKey.clone();

retour resultaat:

  • PKey, het kopieerobject van de huidige sleutel

pem

Retourneert de codering in PEM-indeling van de huidige sleutel

1
String PKey.pem();

retour resultaat:

  • String, de codering in PEM-indeling van de huidige sleutel

der

Retourneert de DER-indelingscodering van de huidige sleutel

1
Buffer PKey.der();

retour resultaat:

  • Buffer, de DER-formaatcodering van de huidige sleutel

json

Retourneert de jwt-indelingscodering van de huidige sleutel

1
Object 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

1
Boolean 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

1
Buffer 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

1
Buffer 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 2
Buffer 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 3
Boolean 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

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

1
Value PKey.toJSON(String key = "");

Oproepparameters:

  • key: String, niet gebruikt

retour resultaat:

  • Value, die een JSON-serialiseerbare waarde retourneert