Hashing selbst verschlüsseln keine direkten Daten. Hashing ist eine Einweg-Funktion; Sie können Daten aus Hash Hash haben, um eine Fix-Size-Ausgabe (den Hash) zu erhalten, aber Sie können den Vorgang nicht umkehren, um die ursprünglichen Daten zurückzufordern. Dies macht es nützlich für Dinge wie Passwortspeicher (bei dem Sie den Hash, nicht das Kennwort selbst speichern) und Datenintegritätsprüfungen (um festzustellen, ob Daten manipuliert wurden).
Die Verschlüsselung hingegen ist ein Zwei-Wege-Prozess. Sie verwenden einen Schlüssel, um Daten zu verschlüsseln, und dieselbe (oder einen verwandten) Schlüssel, um sie zu entschlüsseln.
Daher verwenden Sie Hashing * für * Verschlüsselung nicht. Hashing spielt jedoch eine entscheidende Rolle in * sicheren * Verschlüsselungsschemata in mehrfacher Weise:
1. Schlüsselableitung: Hashing wird häufig verwendet, um Verschlüsselungsschlüssel aus einem Passwort oder einem Master -Schlüssel abzuleiten. Dies ist entscheidend, da das direkte Speichern von Verschlüsselungsschlüssel äußerst riskant ist. Stattdessen können Sie eine starke wichtige Ableitungfunktion wie PBKDF2, Argon2 oder BCrypt verwenden, die wiederholt den Kennwort/den Hauptschlüssel mit einem Salz (zufällige Daten) und eine hohe Iterationszahl hasht, um es rechnerisch teuer zu machen, um den Schlüssel zu bruten oder zu knacken oder zu knacken. Dieser Prozess verwandelt ein relativ schwaches Passwort in einen starken, kryptografisch sicheren Schlüssel, der für die Verschlüsselung verwendet wird.
2. Nachrichtenauthentifizierungscodes (MACs): MACs bieten sowohl Datenintegrität als auch Authentifizierung. Sie kombinieren einen geheimen Schlüssel mit den Daten mit einer kryptografischen Hash-Funktion (wie HMAC-Sha256). Das resultierende MAC -Tag ist an die verschlüsselten Daten angehängt. Der Empfänger verwendet den gleichen Schlüssel und die empfangenen Daten, um den Mac zu berechnen. Wenn der berechnete MAC mit dem empfangenen MAC übereinstimmt, beweist er, dass die Daten nicht manipuliert wurden und dass sie von jemandem stammt, der den geheimen Schlüssel besitzt.
3. Digitale Signaturen: Obwohl digitale Signaturen nicht streng des Verschlüsselungsprozesses selbst Teil des Verschlüsselungsprozesses sind, verwenden digitale Signaturen Hashing, um die Authentizität und Integrität einer Nachricht zu überprüfen. Der Absender hasht die Nachricht und unterschreibt den Hash mit ihrem privaten Schlüssel. Der Empfänger kann die Signatur mit dem öffentlichen Schlüssel des Absenders überprüfen und die Nachricht neu verärgern. Dies beweist, dass die Nachricht vom beanspruchten Absender stammt und nicht geändert wurde.
Zusammenfassend: Sie haben keine Daten * stattdessen *, um es zu verschlüsseln. Sie verwenden Hashing * in Verbindung mit * Verschlüsselung, um die Sicherheit zu verbessern:
* starke Schlüsselableitung: Konvertieren Sie ein Passwort oder einen Steckerschlüssel in einen starken Verschlüsselungsschlüssel.
* Macs: Stellen Sie die Datenintegrität und Authentizität sicher.
* Digitale Signaturen: Überprüfen Sie die Authentizität und Integrität einer Nachricht (häufig neben der Verschlüsselung verwendet).
Beispiel (konzeptionell):
Angenommen, Sie möchten eine Nachricht verschlüsseln:
1. Schlüsselableitung: Verwenden Sie PBKDF2, um einen starken Verschlüsselungsschlüssel aus dem Kennwort eines Benutzers und einem Salz abzuleiten.
2. Verschlüsselung: Verschlüsseln Sie die Nachricht mit einem symmetrischen Verschlüsselungsalgorithmus wie AES mit dem abgeleiteten Schlüssel.
3. Mac -Generierung: Verwenden Sie HMAC-SHA256, um einen Mac mit demselben Verschlüsselungsschlüssel und der verschlüsselten Nachricht zu generieren.
4. Übertragung: Senden Sie die verschlüsselte Nachricht und den Mac.
5. Überprüfung und Entschlüsselung: Der Empfänger empfängt die verschlüsselte Nachricht und Mac. Sie verwenden den gleichen Schlüsselableitungsprozess (mit demselben Salz und Passwort), um den Verschlüsselungsschlüssel abzuleiten. Dann entschlüsseln sie die Nachricht und generieren ihren eigenen Mac. Wenn der generierte MAC mit dem empfangenen MAC übereinstimmt, wird die Nachricht als authentisch und unverändert angesehen.
Denken Sie daran, etablierte, gut vettierten kryptografischen Bibliotheken und Algorithmen zu verwenden. Vermeiden Sie es, Ihre eigene Kryptographie zu implementieren, es sei denn, Sie sind ein Experte auf diesem Gebiet. Eine unsachgemäße Implementierung kann Ihre Sicherheit erheblich schwächen.