ObjectCipher
Symmetrisches Verschlüsselungsalgorithmusobjekt
Das Chiffrierobjekt gehört zucryptoModul, erstellen Sie:
1var 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
3const 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 randomBytes
durch 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 encrypt
den Klartext mit der Methode des Cipher-Objekts:
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
Im obigen Code verwenden wir encrypt
die 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
Hex
usw. 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
3const 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 decrypt
die 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
2new 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
3new 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
4new 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
1readonly String Cipher.name;
keySize
Ganzzahl, gibt die aktuelle Passwortlänge des Algorithmus in Bits zurück
1readonly Integer Cipher.keySize;
ivSize
Ganzzahl, gibt die anfängliche Vektorlänge des aktuellen Algorithmus in Bytes zurück
1readonly Integer Cipher.ivSize;
blockSize
Ganzzahl, gibt die aktuelle Datenblocklänge des Algorithmus in Bytes zurück
1readonly Integer Cipher.blockSize;
Mitgliedsfunktion
paddingMode
Verwenden Sie den Füllmodus
1Cipher.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
1Buffer 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
1Buffer 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.
1String 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.
1Value Cipher.toJSON(String key = "");
Aufrufparameter:
- key: Zeichenfolge, nicht verwendet
Rückgabeergebnisse:
- Value, gibt einen Wert zurück, der JSON serialisierbar enthält