Sie dürfen niemals ein Passwort im Klartext behalten, während Sie einen Benutzer bestätigen oder etwas Ähnliches tun.
Da viele Personen dasselbe Passwort verwenden und ein Angreifer eine Datenbank mit unverschlüsselten Passwörtern entdeckt, können diese leicht in Verbindung mit übereinstimmenden E-Mails verwendet werden, um auf die verknüpfte Website oder das verknüpfte Konto zuzugreifen, und sogar verwendet werden, um zu versuchen, auf andere Konten zuzugreifen.
Passwörter werden heute oft gehasht, wenn ein Passwort angegeben wird. Es wird empfohlen, mit Salt zu hashen und das Salt zusammen mit dem gehashten Passwort aufzubewahren.
Das Salzen mag wie einer der Schritte in einem Rezept für Rösti erscheinen, aber in der Kryptografie bezieht es sich auf das Hinzufügen zufälliger Daten zur Eingabe einer Hash-Funktion, um sicherzustellen, dass der Hash immer ein eindeutiges Ergebnis liefert, selbst wenn die Eingaben identisch sind.
Infolgedessen kann uns der unverwechselbare Hash, der durch Hinzufügen des Salzes erzeugt wird, vor mehreren Angriffsmethoden schützen, einschließlich Hash-Table-Angriffen, während Wörterbuch- und Brute-Force-Offline-Versuche unterdrückt werden.
Hier zeigen wir Ihnen anhand von Codeschnipseln, wie Sie mit „bcrypt“ Ihre Passwörter sichern.
Also, was ist „bcrypt“?
Bcrypt ist eine Hashing-Bibliothek, die mehrere Sprachen unterstützt und eine spezielle Passwortverschlüsselung bietet. Um die Sicherheit Ihres Passworts zu erhöhen, erzeugt es beim Verschlüsseln Ihres Strings automatisch zusätzliche Zufallszeichen (Salt).
Sie können auch festlegen, wie viele zusätzliche Zeichen Sie einer eingehenden Zeichenfolge hinzufügen möchten.
Die bcrypt-Bibliothek liest nur Bytecode, keine rohen Zeichenfolgen. Bevor Sie eine eingehende Passwortzeichenfolge zur Verschlüsselung an bcrypt senden, müssen Sie sie daher zuerst codieren.
Verschlüsseln und Codieren sind nicht dasselbe. Es stellt lediglich sicher, dass eine Zeichenfolge maschinenlesbar ist, bevor sie von einer Verschlüsselungstechnik verdeckt wird.
Verwenden von bcrypt zum Verschlüsseln eines Passworts in Python
Python macht die bcrypt-Passwortverschlüsselung einfach. Wir konzentrieren uns darauf, dies ohne die Hilfe eines Frameworks zu tun. Aber keine Sorge, wenn Sie verstehen, wie Benutzereingaben gespeichert und aus der Datenbank gelesen werden, ist die Vorgehensweise in Frameworks dieselbe.
Installation
Sie müssen nur eine virtuelle Python-Umgebung einrichten und dann eine IDE wie PyCharm verwenden. Die Bibliothek muss dann zuerst installiert werden:
Passwort verschlüsseln
Sehen wir uns an, wie man bcrypt verwendet, um einen Text zu verschlüsseln, nachdem er installiert wurde:
Der oben erwähnte Python-Code wird ausgeführt und gibt einen verschlüsselten Byte-String aus. Aber jedes Mal, wenn Sie das Skript ausführen, ist das Ergebnis anders. Bcrypt verwendet diese Methode, um sicherzustellen, dass jeder Benutzer ein speziell verschlüsseltes Passwort hat.
Das ist übrigens für die Passwortverschlüsselung.
Passwortvergleich und -bestätigung mit Bcrypt
Was passiert, wenn Sie das gehashte Passwort speichern und später prüfen möchten, ob es mit dem Passwort übereinstimmt, das ein Benutzer zur Authentifizierung übermittelt hat?
Das ist einfach. Nur das Authentifizierungspasswort muss mit dem Datenbankeintrag (oder in diesem Fall im Speicher) verglichen werden.
Das Authentifizierungspasswort muss ebenfalls verschlüsselt werden, bevor es mit dem in der Datenbank verglichen wird, da bcrypt nur Byte-Strings lesen kann. Grundsätzlich vergleichen Sie eine verschlüsselte Authentifizierungseingabe mit dem verschlüsselten Hash-Passwort, das Sie derzeit in Ihrer Datenbank haben.
Lassen Sie uns dies testen, indem wir fiktive Python-Eingaben verwenden:
Beim Ausführen des oben genannten Codes werden Sie zur Eingabe eines neuen Passworts aufgefordert. Dies wird von Python im Speicher gespeichert. Im Authentifizierungsbereich geben Sie dann dasselbe Passwort ein, das für Sie privat ist.
Wird das Passwort mit dem zuvor verschlüsselten und gespeicherten abgeglichen, gibt Python eine Erfolgsmeldung aus.
Wenn nicht, wird die Fehlermeldung ausgedruckt und dann der else-Satz hinzugefügt.
Die Grundidee ist identisch mit der Registrierung und anschließenden Bereitstellung eines Passworts an einer Datenbank zur Authentifizierung.
Zusammenfassung
Auch wenn wir einfach verschlüsselte Passwörter verwendet haben, um zu zeigen, wie bcrypt im einfachen Python-Kurzspeicher funktioniert, liegt seine eigentliche Anwendbarkeit in benutzerbasierten Apps.
Dennoch zeigt dieser Artikel die wesentlichen Methoden zum Organisieren Ihres Codes, um dies auch unter realen Umständen zu erreichen.
Wenn Sie beispielsweise Flask verwenden, können Sie die Registrierungs- und Authentifizierungsfelder über separate Webformulare anstelle von Eingaben bereitstellen.
Natürlich lesen Sie beim Vergleichen von Passwörtern aus einer Datenbank, die verschlüsselte Passwörter enthält, die in der realen Welt aufbewahrt werden.
Jona Nitsch
Vielen Dank für diese einfache und einfache Erklärung,
Das hat mir bei meinem aktuellen Projekt sehr geholfen.
Ich finde es sehr gut, dass der Beispielcode auf das Nötigste beschränkt und nicht wie so viele andere Erklärungen überladen ist.
Freundliche Grüße