Objekt integriertes Objekt

ObjectCipher

Symmetrisches Verschlüsselungsalgorithmusobjekt

Das Chiffrierobjekt gehört zucryptoModul, erstellen Sie:

1
var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);

Im Folgenden wird AES als Beispiel verwendet, um zu demonstrieren, wie Cipher-Objekte zur Ver- und Entschlüsselung verwendet werden:

Zuerst müssen wir ein symmetrisch verschlüsseltes Cipher-Objekt erhalten, beispielsweise den AES-Verschlüsselungsalgorithmus:

1 2 3
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);

Im obigen Code haben wir randomBytesdurch die Methode eine 16-Byte-Zufallszahl als AES-Schlüssel generiert. Anschließend haben wir ein Cipher-Objekt des AES-Algorithmus erstellt, wobei wir den ECB-Blockchiffrier-Arbeitsmodus und die generierte Zufallszahl als Schlüssel verwendet haben.

Als nächstes verschlüsseln wir encryptden Klartext mit der Methode des Cipher-Objekts:

1 2 3
const plaintext = 'Hello, world!'; const encrypted = cipher.encrypt(plaintext); console.log(encrypted); // output encrypted data

Im obigen Code verwenden wir encryptdie Methode, um die Zeichenfolge zu verschlüsseln Hello, world!und das verschlüsselte Ergebnis auszugeben.

Bezüglich des obigen Codes müssen Sie die folgenden Punkte beachten:

  • Bevor Sie die Verschlüsselung durchführen, müssen Sie ein symmetrisch verschlüsseltes Cipher-Objekt erstellen und Parameter wie Verschlüsselungsalgorithmus, Passwort und Blockverschlüsselungs-Arbeitsmodus festlegen.
  • Nach dem Aufruf der Verschlüsselungsmethode können wir die verschlüsselten Daten abrufen, bei denen es sich normalerweise um eine handeltBufferObjekt. Es ist zu beachten, dass es sich bei der Ausgabe um Binärdaten handelt, die in der entsprechenden Methode gedruckt werden müssen, z. B. in Verwendung Hexusw. zur Konvertierung.

Wenn wir die Daten entschlüsseln wollen, benötigen wir außerdem ein Cipher-Objekt, das ebenfalls auf dem AES-Algorithmus basiert und den gleichen Schlüssel- und Blockchiffrier-Arbeitsmodus verwendet:

1 2 3
const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key); const decrypted = decipher.decrypt(encrypted); console.log(decrypted.toString()); // output decrypted data

Hier erstellen wir ein neues Cipher-Objekt, verwenden denselben Schlüssel- und Passwort-Arbeitsmodus und verwenden decryptdie Methode zum Entschlüsseln der verschlüsselten Daten. Das Ergebnis der Entschlüsselung ist aBufferDas Objekt muss in eine Zeichenfolge konvertiert werden, um korrekt ausgegeben zu werden.

Erbschaftsverhältnis

Konstrukteur

Cipher

Verschlüsselungskonstruktor, wird nur für die ARC4-Initialisierung verwendet

1 2
new Cipher(Integer provider, Buffer key);

Aufrufparameter:

  • provider: Ganzzahl, geben Sie den Verschlüsselungsalgorithmus an
  • key:BufferGeben Sie das Verschlüsselungs- und Entschlüsselungskennwort an

Verschlüsselungskonstruktor

1 2 3
new Cipher(Integer provider, Integer mode, Buffer key);

Aufrufparameter:

  • provider: Ganzzahl, geben Sie den Verschlüsselungsalgorithmus an
  • mode: Ganzzahl, gibt den Arbeitsmodus der Blockverschlüsselung an
  • key:BufferGeben Sie das Verschlüsselungs- und Entschlüsselungskennwort an

Verschlüsselungskonstruktor

1 2 3 4
new Cipher(Integer provider, Integer mode, Buffer key, Buffer iv);

Aufrufparameter:

  • provider: Ganzzahl, geben Sie den Verschlüsselungsalgorithmus an
  • mode: Ganzzahl, gibt den Arbeitsmodus der Blockverschlüsselung an
  • key:BufferGeben Sie das Verschlüsselungs- und Entschlüsselungskennwort an
  • iv:Buffer, geben Sie den Anfangsvektor an

Mitgliedereigenschaften

name

String, gibt den aktuellen Algorithmusnamen zurück

1
readonly String Cipher.name;

keySize

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

1
readonly Integer Cipher.keySize;

ivSize

Ganzzahl, gibt die anfängliche Vektorlänge des aktuellen Algorithmus in Bytes zurück

1
readonly Integer Cipher.ivSize;

blockSize

Ganzzahl, gibt die aktuelle Datenblocklänge des Algorithmus in Bytes zurück

1
readonly Integer Cipher.blockSize;

Mitgliedsfunktion

paddingMode

Verwenden Sie den Füllmodus

1
Cipher.paddingMode(Integer mode);

Aufrufparameter:

  • mode: Ganzzahl, gibt den Auffüllmodus an, der Standardwert ist PADDING_PKCS7

encrypt

Verschlüsseln Sie Daten mit dem aktuellen Verschlüsselungsalgorithmus

1
Buffer Cipher.encrypt(Buffer data) async;

Aufrufparameter:

  • data:BufferGeben Sie die zu verschlüsselnden Daten an

Rückgabeergebnisse:

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

decrypt

Entschlüsseln Sie Daten mit dem aktuellen Verschlüsselungsalgorithmus

1
Buffer Cipher.decrypt(Buffer data) async;

Aufrufparameter:

  • data:BufferGeben Sie die zu entschlüsselnden Daten an

Rückgabeergebnisse:

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

toString

Gibt die Zeichenfolgendarstellung des Objekts zurück. Im Allgemeinen wird „[Native Object]“ zurückgegeben. Das Objekt kann gemäß seinen eigenen Eigenschaften neu implementiert werden.

1
String Cipher.toString();

Rückgabeergebnisse:

  • String, gibt die Zeichenfolgendarstellung des Objekts zurück

toJSON

Gibt eine Darstellung des Objekts im JSON-Format zurück und gibt im Allgemeinen eine Sammlung lesbarer Eigenschaften zurück, die vom Objekt definiert werden.

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

Aufrufparameter:

  • key: Zeichenfolge, nicht verwendet

Rückgabeergebnisse:

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