Objekt eingebautes Objekt

Objekt-PKey

Objekt des asymmetrischen Verschlüsselungsalgorithmus

PKey-Objekte gehören zucryptoModul erstellen:

1
var k = new crypto.PKey();

Erbverhältnis

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<this>PKey|new PKey()|from();recover()|name;curve;keySize;alg;publicKey|isPrivate();clone();toX25519();pem();der();json();equals();encrypt();decrypt();sign();verify();computeSecret()] [object] <:- [PKey] PKey new PKey() from() recover() name curve keySize alg publicKey isPrivate() clone() toX25519() pem() der() json() equals() encrypt() decrypt() sign() verify() computeSecret() object toString() toJSON()

Konstrukteur

PKey

Erstellen Sie einen PKey aus einem Schlüssel im DER-Format

1 2
new PKey(Buffer DerKey, String password = "");

Aufrufparameter:

  • DerKey:Buffer, Schlüssel im DER-Format
  • password: String, Entschlüsselungspasswort

Erstellen Sie einen PKey aus einem Schlüssel im PEM-Format

1 2
new PKey(String pemKey, String password = "");

Aufrufparameter:

  • pemKey: String, Schlüssel im PEM-Format
  • password: String, Entschlüsselungspasswort

Erstellen Sie einen PKey aus einem Schlüssel im JSON-Format

1
new PKey(Object jsonKey);

Aufrufparameter:

  • jsonKey: Objekt, Schlüssel im JSON-Format

Das Format von jsonKey unterstützt die folgenden vier privaten RSA-Schlüssel:

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==" }

Öffentlicher RSA-Schlüssel:

1 2 3 4 5
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB" }

Privater EC-Schlüssel:

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" }

Öffentlicher EC-Schlüssel:

1 2 3 4 5 6
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" }

statische Funktion

from

Laden Sie einen Schlüssel im DER-Format

1 2
static PKey PKey.from(Buffer DerKey, String password = "");

Aufrufparameter:

  • DerKey:Buffer, Schlüssel im DER-Format
  • password: String, Entschlüsselungspasswort

Rückgabeergebnis:

  • PKey, gibt ein Objekt zurück, das den Schlüssel enthält

Laden Sie einen Schlüssel im PEM-Format

1 2
static PKey PKey.from(String pemKey, String password = "");

Aufrufparameter:

  • pemKey: String, Schlüssel im PEM-Format
  • password: String, Entschlüsselungspasswort

Rückgabeergebnis:

  • PKey, gibt ein Objekt zurück, das den Schlüssel enthält

Laden Sie einen Schlüssel im JSON-Format

1
static PKey PKey.from(Object jsonKey);

Aufrufparameter:

  • jsonKey: Objekt, Schlüssel im JSON-Format

Rückgabeergebnis:

  • PKey, gibt ein Objekt zurück, das den Schlüssel enthält

Das Format von jsonKey unterstützt die folgenden vier privaten RSA-Schlüssel:

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==" }

Öffentlicher RSA-Schlüssel:

1 2 3 4 5
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB" }

Privater EC-Schlüssel:

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" }

Öffentlicher EC-Schlüssel:

1 2 3 4 5 6
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" }

recover

Stellen Sie den öffentlichen Schlüssel von einer wiederherstellbaren Signatur wieder her, unterstützt nur secp256k1

1 2
static PKey PKey.recover(Buffer data, Buffer sig) async;

Aufrufparameter:

  • data:Buffer, die Originaldaten der Signatur
  • sig:Buffer, wiederherstellbare Signatur

Rückgabeergebnis:

  • PKey, gibt ein Objekt zurück, das den öffentlichen Schlüssel enthält

Mitgliedseigenschaften

name

String, gibt den aktuellen Algorithmusnamen zurück

1
readonly String PKey.name;

curve

String, gibt den Namen der elliptischen Kurve für den aktuellen Algorithmus zurück, nur für EC und SM2

1
readonly String PKey.curve;

keySize

Ganzzahl, gibt die aktuelle Passwortlänge des Algorithmus in Bits zurück

1
readonly Integer PKey.keySize;

alg

String, gibt den aktuellen Objektsignaturalgorithmus zurück und legt ihn fest

1
String PKey.alg;

publicKey

PKey, gibt den öffentlichen Schlüssel des aktuellen Schlüssels zurück

1
readonly PKey PKey.publicKey;

Rückgabeergebnis:

  • der öffentliche Schlüssel des aktuellen Schlüssels

Mitgliedsfunktion

isPrivate

Abfrage, ob der aktuelle Schlüssel ein privater Schlüssel ist

1
Boolean PKey.isPrivate();

Rückgabeergebnis:

  • Boolean, ist True, um den privaten Schlüssel darzustellen

clone

Kopieren Sie den aktuellen Schlüssel

1
PKey PKey.clone();

Rückgabeergebnis:

  • PKey, eine Kopie des aktuellen Schlüssels

toX25519

Konvertieren Sie das öffentlich-private X25519-Schlüsselpaar aus dem aktuellen Objekt, unterstützt nur Ed25519

1
PKey PKey.toX25519() async;

Rückgabeergebnis:

  • PKey, gibt das Objekt des entsprechenden öffentlichen X25519-Schlüssels zurück

pem

Gibt die PEM-Formatcodierung des aktuellen Schlüssels zurück

1
String PKey.pem();

Rückgabeergebnis:

  • String, die PEM-Formatcodierung des aktuellen Schlüssels

der

Gibt die DER-Formatcodierung des aktuellen Schlüssels zurück

1
Buffer PKey.der();

Rückgabeergebnis:

  • Buffer, die DER-Formatcodierung des aktuellen Schlüssels

json

Gibt die JWT-Formatcodierung des aktuellen Schlüssels zurück

1
Object PKey.json(Object opts = {});

Aufrufparameter:

  • opts: Objekt, gibt Exportoptionen an

Rückgabeergebnis:

  • Object, die jwt-Formatcodierung des aktuellen Schlüssels

opts unterstützt die folgenden Parameter:

1 2 3
{ compress: false, 指定签名以压缩方式输出公钥 }

Die unterstützten Kurven für die Komprimierung sind: secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2


equals

Vergleichen Sie, ob zwei öffentliche/private Schlüssel gleich sind

1
Boolean PKey.equals(PKey key);

Aufrufparameter:

  • key: PKey, geben Sie den öffentlichen/privaten Schlüssel der anderen Partei an

Rückgabeergebnis:

  • Boolean, gibt dasselbe true zurück

encrypt

Verschlüsseln Sie Daten mit dem öffentlichen Schlüssel der aktuellen Algorithmus-Verschlüsselung

1
Buffer PKey.encrypt(Buffer data) async;

Aufrufparameter:

  • data:Buffer, geben Sie die zu verschlüsselnden Daten an

Rückgabeergebnis:

  • Buffer, gibt die verschlüsselten Daten zurück

decrypt

Entschlüsseln Sie Daten mit dem privaten Schlüssel des aktuellen Algorithmus

1
Buffer PKey.decrypt(Buffer data) async;

Aufrufparameter:

  • data:Buffer, gibt die zu entschlüsselnden Daten an

Rückgabeergebnis:

  • Buffer, gibt die entschlüsselten Daten zurück

sign

Signieren Sie Daten mit dem kryptografischen privaten Schlüssel des aktuellen Algorithmus

1 2
Buffer PKey.sign(Buffer data, Object opts = {}) async;

Aufrufparameter:

  • data:Buffer, geben Sie die zu signierenden Daten an
  • opts: Objekt, gibt Signaturoptionen an

Rückgabeergebnis:

  • Buffer, gibt die signierten Daten zurück

opts unterstützt die folgenden Parameter:

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

Authentifizieren Sie Daten mit dem kryptografischen öffentlichen Schlüssel des aktuellen Algorithmus

1 2 3
Boolean PKey.verify(Buffer data, Buffer sign, Object opts = {}) async;

Aufrufparameter:

  • data:Buffer, geben Sie die zu validierenden Daten an
  • sign:Buffer, wobei die zu überprüfende Signatur angegeben wird
  • opts: Objekt, geben Sie Validierungsoptionen an

Rückgabeergebnis:

  • Boolean, gibt das verifizierte Ergebnis zurück

opts unterstützt die folgenden Parameter:

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 }

computeSecret

Berechne Elliptic Curve Diffie-Hellman (ECDH) Shared Secret unter Verwendung des aktuellen Algorithmus

1
Buffer PKey.computeSecret(PKey publicKey) async;

Aufrufparameter:

  • publicKey: PKey, geben Sie den öffentlichen Schlüssel der anderen Partei an

Rückgabeergebnis:

  • Buffer, gibt den berechneten gemeinsamen Schlüssel zurück

toString

Gibt die Zeichenfolgendarstellung des Objekts zurück, gibt im Allgemeinen "[Native Object]" zurück, das Objekt kann gemäß seinen eigenen Eigenschaften neu implementiert werden

1
String PKey.toString();

Rückgabeergebnis:

  • String, gibt die Zeichenfolgendarstellung des Objekts zurück

toJSON

Gibt die Darstellung des Objekts im JSON-Format zurück, gibt im Allgemeinen den Satz lesbarer Eigenschaften zurück, die durch das Objekt definiert sind

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

Aufrufparameter:

  • key: Schnur, unbenutzt

Rückgabeergebnis:

  • Value, gibt einen Wert zurück, der JSON-serialisierbar enthält