freshman2017
Goto Top

MySQL- Tabellenfeld verschlüsseln - sha256

Guten Tag liebe Gemeinde,

ich brauche gerade mal Hilfe. Ich möchte gerne innerhalb einer MySQL-Tabelle ein bestimmtes Feld mit sha256 verschlüsseln.

Bevor es in dem Feld steht, ist es unverschlüsselt. Es soll nur verschlüsselt werden, wenn es noch nicht verschlüsselt ist. Gibt es da eine Möglichkeit?

Beste Grüße.

Content-ID: 3244013695

Url: https://administrator.de/forum/mysql-tabellenfeld-verschluesseln-sha256-3244013695.html

Ausgedruckt am: 22.12.2024 um 16:12 Uhr

wiesi200
wiesi200 03.07.2022 um 15:09:59 Uhr
Goto Top
Hallo,

SHA ist eine Haschfunktion. Also kein entschlüsseln mehr.

Aber ja das kann MySQL problemlos.
https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#functi ...

Es kennt aber auch Passwort Verschlüsselung.
https://dev.mysql.com/doc/refman/5.6/en/password-hashing.html

Das Handbuch ist dein Freund
freshman2017
freshman2017 03.07.2022 um 16:43:07 Uhr
Goto Top
SELECT SHA256('abc');  

Kenne ich, funktioniert sehr gut.
Aber wie kann ich am besten den Wert aus der Spalte Passwort auslesen, verschlüsseln und wieder zurück zu schreiben.
148523
148523 03.07.2022 um 17:22:41 Uhr
Goto Top
SHA ist eine Haschfunktion
Aufpassen damit du nicht in den Fokus des Drogenbeauftragten des Forums gerätst!!! face-big-smile
https://en.wiktionary.org/wiki/hash
colinardo
colinardo 03.07.2022, aktualisiert am 04.07.2022 um 15:40:40 Uhr
Goto Top
Moin.
Zitat von @freshman2017:
Aber wie kann ich am besten den Wert aus der Spalte Passwort auslesen, verschlüsseln und wieder zurück zu schreiben.
Ein Hash ist wie schon erwähnt wurde, keine Verschlüsselung!
Eine UPDATE-Query ... einmalig ausführen und ab dann nur noch per Default die Hashes rein schreiben ?!
UPDATE tabellexyz SET passwort = SHA2(passwort,256);
Ich würde aber an deiner Stelle in die Hashes zusätzlich noch ein SALT mit reinpacken damit es auch vorberechnete Rainbowtables schwerer haben.
Des weiteren sollte man die Hashes am besten gleich als Blob oder binary in einer separaten Spalte sichern (bswp. mit UNHEX()), das ist wesentlich effizienter als sie als VARCHAR abzuspeichern und man vermeidet damit so manche Fallen, siehe Hinweise am Anfang der folgenden Seite
https://dev.mysql.com/doc/refman/5.6/en/encryption-functions.html#functi ...
Mögliches Beispiel
http://www.sqlfiddle.com/#!9/2c921d/1/0

Grüße Uwe
ukulele-7
ukulele-7 04.07.2022 um 08:49:18 Uhr
Goto Top
Ich würde auch das gehashte bzw. verschlüsselte Passwort in einer eigenen Spalte ablegen, ansonsten müsstest du zumindest die Information nachhalten ob das Passwort schon konvertiert wurde oder nicht. Du kannst im Nachhinein unmöglich sagen ob die Zeichenkette 0xCA74E5FE75654735D3B8D04A7BDF5DCDD06F1C6C2A215171A24E5A9DCB28E7A2 das vom Benutzer eingegebene Passwort ist oder nicht.
erikro
erikro 04.07.2022 um 15:49:21 Uhr
Goto Top
Zitat von @ukulele-7:
0xCA74E5FE75654735D3B8D04A7BDF5DCDD06F1C6C2A215171A24E5A9DCB28E7A2 das vom Benutzer eingegebene Passwort ist oder nicht.

HEY! Woher kennst Du mein Passwort? face-wink