0x0 EinführungZunächst einmal: Was ist ein Hash-Algorithmus? Ein Algorithmus, der einen Hashwert für ein bestimmtes Datenelement, beispielsweise eine Nachricht oder ein Sitzungselement, erzeugt. MD5 ist beispielsweise ein Hashing-Algorithmus. Eine Hash-Funktion oder ein Hash-Algorithmus in der Softwareentwicklung, auch Hashfunktion genannt, ist eine Methode zur Erstellung eines kleinen digitalen „Fingerabdrucks“ aus beliebigen Daten. Alle Hashfunktionen haben eine grundlegende Eigenschaft: Wenn zwei Hashwerte unterschiedlich sind (gemäß derselben Funktion), dann sind auch die ursprünglichen Eingaben der beiden Hashwerte unterschiedlich. Verschlüsselungsalgorithmen werden üblicherweise in symmetrische und asymmetrische Verschlüsselungsalgorithmen unterteilt. Bei symmetrischen Verschlüsselungsalgorithmen müssen beide Parteien, die die Informationen erhalten, den Schlüssel sowie den Verschlüsselungs- und Entschlüsselungsalgorithmus im Voraus kennen und ihre Schlüssel müssen identisch sein. Dann können die Daten verschlüsselt und entschlüsselt werden. Der asymmetrische Algorithmus unterscheidet sich hiervon. Die sendenden Parteien A und B generieren im Voraus einen Schlüsselbund, und dann sendet A seinen öffentlichen Schlüssel an B und B sendet seinen öffentlichen Schlüssel an A. Wenn A eine Nachricht an B senden möchte, muss er zuerst den öffentlichen Schlüssel von B verwenden, um die Nachricht zu verschlüsseln, und sie dann an B senden. Zu diesem Zeitpunkt verwendet B seinen eigenen privaten Schlüssel, um die Nachricht zu entschlüsseln. Dasselbe Prinzip gilt, wenn B eine Nachricht an A sendet. Im Wesentlichen verwandeln sowohl Hashing als auch Verschlüsselung ein Objekt in eine bedeutungslose Zeichenfolge. Der Unterschied besteht darin, dass das gehashte Objekt nicht wiederhergestellt werden kann und es sich um einen Einwegprozess handelt. Beispielsweise werden Passwörter normalerweise mithilfe eines Hash-Algorithmus verschlüsselt. Wenn ein Benutzer also sein Passwort vergisst, kann er es nur ändern, aber nicht an das ursprüngliche Passwort gelangen. Bei der Verschlüsselung von Informationen handelt es sich jedoch um einen herkömmlichen Verschlüsselungsalgorithmus, und die verschlüsselten Informationen können mit dem geheimen Schlüssel entschlüsselt und wiederhergestellt werden. Hashing und Verschlüsselung Hashing ist der Prozess der Konvertierung eines Schlüsselwerts in einen anderen Schlüsselwert durch einen mathematischen Algorithmus. Die Hash-Funktion wird verwendet, um die Konvertierung zu generieren, und der Ausgabeinhalt kann nicht wiederhergestellt werden. Es wird hauptsächlich zur Kennwortspeicherung verwendet, wenn Daten gehasht werden müssen. Unter Verschlüsselung versteht man die Verschlüsselung von Informationen, also die Umwandlung der ursprünglichen Informationen in Geheimtext. Sie wird im Allgemeinen verwendet, wenn der Client vertrauliche Informationen wie Passwörter an den Server sendet. Die Informationen werden vor dem Senden verschlüsselt und dann auf dem Server entschlüsselt. 0x1-HashingDas Node.js-Ökosystem hat viele Abhängigkeiten, wie Bcrypt und Argon2, die einfach zu verwenden sind. Dieses Mal wird Bcrypt verwendet, um den Hash-Prozess zu implementieren: Garn fügt bcrypt hinzu Garn addieren @types/bcrypt -D Dann kapseln Sie das gehashte Geschäft: importiere { Injectable } von '@nestjs/common' importiere * als bcrypt von 'bcrypt' @Injizierbar() Exportklasse BcryptService { private statische schreibgeschützte SALT_ROUNDS: Zahl = 10 /** * Passwort vergleichen und prüfen * @param rawStr * @param hashedStr */ asynchroner Vergleich(rawStr: Zeichenfolge, hashedStr: Zeichenfolge) { gibt bcrypt.compare(rawStr, hashedStr) zurück } /** * Hash generieren * @param rawStr * @param Salz */ asynchroner Hash (rawStr: Zeichenfolge, Salt?: Zeichenfolge) { gibt bcrypt.hash zurück (rawStr, salt || BcryptService.SALT_ROUNDS) } /** * Salz erzeugen */ async genSalt() { gibt bcrypt.genSalt zurück (BcryptService.SALT_ROUNDS) } } 0x2-VerschlüsselungDas Node.js-System verfügt über ein Verschlüsselungsmodul, das zum Verschlüsseln und Entschlüsseln sowie für andere damit verbundene Vorgänge verwendet werden kann. Im Folgenden wird die AES-256-CTR-Verschlüsselung zum Verschlüsseln von Daten verwendet: importiere { createCipheriv, randomBytes } von 'crypto' importiere { promisify } von 'util' const iv = zufälligeBytes(16) const password = 'Zum Generieren des Schlüssels verwendetes Passwort' // Die Schlüssellänge hängt vom Algorithmus ab // Bei aes256 ist sie 32 Bytes lang const key = (await promisify(scrypt)(password, 'salt', 32)) as Buffer const cipher = createCipheriv('aes-256-ctr', Schlüssel, iv) const textToEncrypt = "Nest" const verschlüsselterText = Buffer.concat([ cipher.update(Zuverschlüsselnder Text), cipher.final() ]) Wenn Sie entschlüsseln müssen, ist das auch ganz einfach: importiere { createDecipheriv } von 'crypto' const decipher = createDecipheriv('aes-256-ctr', Schlüssel, iv) const entschlüsselterText = Buffer.concat([ decipher.update(verschlüsselterText), entschlüsseln.final() ]) 0x3 ReferenzVerschlüsselung und Hashing Node.js-Krypto node.bcrypt.js ZusammenfassenDies ist das Ende dieses Artikels über Nest.js-Hashing und -Verschlüsselung. Weitere verwandte Inhalte zu Nest.js-Hashing und -Verschlüsselung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! |
<<: Beispielcode für die Master-Slave-Trennung einer MySQL-Datenbank
>>: Beispiel für eine Domänennamenüberprüfungsmethode für Betrieb und Wartung von Nginx
Deklarieren Sie den Parameternamen, den Typ und d...
1. useState: Funktionskomponenten Status geben An...
Hintergrund: Ich möchte einen SAP ECC Server inst...
Inhaltsverzeichnis 1. Einführung in Gojs 2. Gojs ...
Ich glaube, jeder kennt HTML und CSS, kennt die T...
1. HTML-Tags immer schließen Im Quellcode der vor...
Inhaltsverzeichnis 1. Einleitung: 2. Die erste Id...
1. PC-Reset Initialisierung im PC-Stil /* normali...
Ich werde nicht erklären, was CUDA ist, sondern d...
Inhaltsverzeichnis Vorne geschrieben Lösung 1: Gl...
<br />Der Schriftsatz auf der Seite erfolgt ...
In diesem Artikel wird der spezifische Code von J...
Inhaltsverzeichnis Fazit zuerst Frage Lösung Verw...
So legen Sie die Position des Blockelements in de...
In diesem Artikel werden die Installations- und K...