Das Node.js-Kryptomodul optimiert den Prozess der Durchführung kryptografischer Vorgänge. Hier erfahren Sie, wie Sie es verwenden.
Unter Kryptografie versteht man die Sicherung von Kommunikation und Daten durch deren Umwandlung in Formate, die nur autorisierte Parteien entschlüsseln können.
Die Node.js Krypto Das Modul ist ein integriertes Modul, das Node.js-Anwendungen kryptografische Funktionen bereitstellt. Es bietet eine Reihe kryptografischer Funktionen, darunter Verschlüsselung, Entschlüsselung, Hashing, digitale Signaturen, sichere Zufallszahlengenerierung und mehr.
Hier erfahren Sie mehr über die verschiedenen Anwendungen des Node.js-Kryptomoduls und wie Sie diese zur Sicherung Ihrer Anwendungen nutzen können.
Hashing
Hashing ist eine einseitige kryptografische Technik mit dem Sie einen bestimmten Schlüssel oder eine bestimmte Zeichenfolge in eine Ausgabe fester Größe umwandeln können, die als Hash oder Digest bezeichnet wird.
Hashing ist eine Einwegfunktion, was bedeutet, dass Sie beim Hashen eines Schlüssels oder einer Zeichenfolge nicht den ursprünglichen Wert aus dem generierten Hash erhalten können.
Das Node.js-Kryptomodul unterstützt verschiedene Hashing-Funktionen wie SHA-256, SHA-512, MD5 und mehr.
Mit den Kryptomodulen können Sie Daten hashen createHash Methode, die den Hashing-Algorithmus als Argument verwendet. Die Methode gibt a zurück Hash Objekt, das Sie zum Hashen der Daten verwenden können aktualisieren Und verdauen Methoden.
Zum Beispiel:
const Krypto = erfordern('Krypto');
const Daten = "Passwort";
// Hash-Objekt erstellen
const hashAlgo = crypto.createHash('sha256')// Übergabe der zu hashenden Daten
hashAlgo.update (Daten);// Den Hash im erforderlichen Format erstellen
const hash = hashAlgo.digest('verhexen');
Konsole.Protokoll(`Hash: ${hash}`);
Im obigen Beispiel das Kryptomodul createHash hat ein Hashing-Objekt mit dem erstellt sha256 Hashing-Algorithmus. Der aktualisieren Die Methode für das Hash-Objekt nimmt die Eingabedaten und hasht sie. Dann ist die verdauen Die Methode verwendet einen Codierungsparameter, der das Format des Ausgabe-Hash-Werts angibt, und gibt den Hash im angegebenen Format zurück (verhexen).
Hashing ist nützlich, um die Integrität von Daten, die Speicherung von Passwörtern, digitale Signaturen und mehr zu überprüfen.
Generieren von Zufallsdaten
In der Kryptografie, beim Gaming und beim Testen werden für verschiedene Anwendungsfälle häufig kryptografisch sichere Zufallsdaten benötigt.
In der Kryptografie können Sie Zufallsdaten verwenden, um Schlüssel, Salts und Initialisierungsvektoren für Verschlüsselungs- und Entschlüsselungsalgorithmen zu generieren.
Beim Spielen können Sie Zufallsdaten verwenden, um Spiellevel, Charaktere, Gegenstände und mehr zu generieren, um Betrug zu verhindern und sicherzustellen, dass das Spiel nicht vorhersehbar ist.
Beim Testen können Sie damit reale Szenarien und Randfälle simulieren.
Mit den Node.js-Kryptomodulen können Sie Zufallsdaten generieren randomBytes Methode. Diese Methode verwendet eine Zahl als Argument und gibt einen Puffer mit zufälligen Bytes zurück.
Diese Zahl stellt die Größe der Bytes dar, die die Methode generiert. Die Anzahl darf jedoch nicht größer sein als 2³¹ - 1 (2147483647), das ist der maximale Wert, der durch eine 32-Bit-Ganzzahl mit Vorzeichen dargestellt werden kann.
Zum Beispiel:
const Krypto = erfordern(„Krypto“);
// Zufällige Bytes erstellen
const randomBytes = crypto.randomBytes(32);// in Hex konvertieren
const randomString = randomBytes.toString("verhexen");
Konsole.log (randomString); //protokolliert eine zufällige Zeichenfolge in der Konsole
Der obige Codeblock generiert und protokolliert eine zufällige Zeichenfolge mit 64 Hexadezimalzeichen (32 Byte) in der Konsole.
Die Generierung kryptografisch sicherer Zufallsdaten ist wichtig, da sie sicherstellt, dass die Zufallsdaten nicht vorhersehbar sind und Angreifer sie nicht manipulieren oder erraten können.
Verschlüsselung und Entschlüsselung in Node.js
Bei der Verschlüsselung handelt es sich um den Prozess der Umwandlung von Klartext in eine unlesbare Form (Chiffriertext) unter Verwendung eines Verschlüsselungsalgorithmus und eines geheimen Schlüssels.
Die Entschlüsselung ist die Umkehrung der Verschlüsselung. Dabei handelt es sich um den Prozess der Rückumwandlung des Chiffriertextes in Klartext unter Verwendung desselben Verschlüsselungsalgorithmus und Schlüssels.
Das Node.js-Kryptomodul bietet Unterstützung für verschiedene Verschlüsselungs- und Entschlüsselungsalgorithmen. einschließlich AES (Advanced Encryption Standard), DES (Data Encryption Standard) und RSA (Rivest–Shamir–Adleman).
So verschlüsseln Sie Daten in Node.js mit dem Kryptomodul
Sie können Daten mit verschlüsseln crypto.createCipheriv() Methode, die den Verschlüsselungsalgorithmus, den geheimen Schlüssel und einen Initialisierungsvektor als Eingabe verwendet. Der geheime Schlüssel hängt vom verwendeten Verschlüsselungsalgorithmus ab. Zum Beispiel, z der aes-256-Algorithmus In CBC Im Modus muss die Schlüssellänge 32 Byte betragen.
Die Methode gibt a zurück Chiffre Objekt, mit dem Sie die Daten verschlüsseln können aktualisieren() Und Finale() Methoden. Die verschlüsselten Daten werden normalerweise als hexadezimale Zeichenfolge oder als Puffer dargestellt.
Zum Beispiel:
const Krypto = erfordern(„Krypto“);
// Einen geheimen Schlüssel für die Ver- und Entschlüsselung generieren.
const SecretKey = crypto.randomBytes(32);// Erzeuge einen Initialisierungsvektor
const iv = crypto.randomBytes(16);// Zu verschlüsselnde Daten
const plainText = „Das ist eine geheime Nachricht“;// Verschlüsselungsobjekt erstellen
const cipher = crypto.createCipheriv(„aes-256-cbc“, SecretKey, iv);// die Daten verschlüsseln
lassen cryptotext = cipher.update (plainText, „utf-8“, "verhexen");// Verschlüsselung abschließen
verschlüsselterText += cipher.final("verhexen");
Konsole.log (verschlüsselter Text);
Das obige Beispiel zeigt, wie Sie mithilfe des Kryptomoduls Klartext mit aes-256 im CBC-Modus verschlüsseln können. Es generiert einen geheimen Schlüssel und einen Initialisierungsvektor mithilfe von crypto.randomBytes Methode. Anschließend wird mithilfe von ein Chiffrierobjekt erstellt crypto.createCipheriv -Methode und verschlüsselt die Klartextnachricht mit der cipher.update Und cipher.final Methoden.
Das Ergebnis ist eine hexadezimale Zeichenfolge der verschlüsselten Nachricht, die Sie mit demselben geheimen Schlüssel und demselben IV entschlüsseln können.
So entschlüsseln Sie Daten in Node.js mithilfe des Kryptomoduls
Mit den Kryptomodulen können Sie verschlüsselte Daten entschlüsseln crypto.createDecipheriv() Methode, die den Entschlüsselungsalgorithmus, den geheimen Schlüssel und einen Initialisierungsvektor als Eingabe verwendet. Die Methode gibt a zurück Entziffern Objekt, mit dem Sie die Daten entschlüsseln können Decipher.update() Und Decipher.final() Methoden.
Zum Beispiel:
// Decipher-Objekt erstellen
const decipher = crypto.createDecipheriv(„aes-256-cbc“, SecretKey, iv);// die Daten entschlüsseln
lassen decryptedText = decipher.update (encryptedText, "verhexen", „utf-8“);// Entschlüsselung abschließen
decryptedText += decipher.final(„utf-8“);
Konsole.log (decryptedText); // Dies ist eine geheime Nachricht
Das obige Beispiel zeigt, wie Sie verschlüsselte Daten mit demselben Algorithmus, demselben geheimen Schlüssel und demselben Initialisierungsvektor entschlüsseln können, mit dem Sie sie verschlüsselt haben.
Es erstellt ein Decipher-Objekt mithilfe von crypto.createDecipheriv Methode. Anschließend werden die Daten mithilfe von entschlüsselt entschlüsseln.aktualisieren -Methode, die die Daten, die Eingabekodierung und die Ausgabekodierung als Argumente verwendet. Schließlich wird der Entschlüsselungsprozess mit dem beendet decipher.final Methode. Durch den Aufruf dieser Methode wird sichergestellt, dass das Decipher-Objekt länger zum Entschlüsseln von Daten verwendet werden kann. Das Ergebnis ist eine reine Textzeichenfolge.
Verschlüsselung und Entschlüsselung sind für den Schutz sensibler Daten und die Wahrung ihrer Vertraulichkeit von entscheidender Bedeutung. Sie haben verschiedene reale Anwendungen in den Bereichen E-Commerce, Online-Banking, Datenspeicherung und mehr.
Weitere Anwendungen des Node.js-Kryptomoduls
Neben Hashing, der Generierung kryptografisch sicherer Zufallsdaten sowie der Ver- und Entschlüsselung können Sie auch die verwenden Node.js-Kryptomodul zum Signieren und Überprüfen digitaler Signaturen, die dabei helfen, die Authentizität und Integrität digitaler Signaturen zu überprüfen Unterlagen. Darüber hinaus können Sie mit dem Kryptomodul Streams für die Datenübertragung sichern, um Datenmanipulationen und Abhören während der Übertragung zu verhindern.