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-Key: 3244013695

Url: https://administrator.de/contentid/3244013695

Printed on: May 9, 2024 at 19:05 o'clock

Member: wiesi200
wiesi200 Jul 03, 2022 at 13:09:59 (UTC)
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
Member: freshman2017
freshman2017 Jul 03, 2022 at 14:43:07 (UTC)
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.
Mitglied: 148523
148523 Jul 03, 2022 at 15:22:41 (UTC)
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
Member: colinardo
colinardo Jul 03, 2022, updated at Jul 04, 2022 at 13:40:40 (UTC)
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
Member: ukulele-7
ukulele-7 Jul 04, 2022 at 06:49:18 (UTC)
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.
Member: erikro
erikro Jul 04, 2022 at 13:49:21 (UTC)
Goto Top
Zitat von @ukulele-7:
0xCA74E5FE75654735D3B8D04A7BDF5DCDD06F1C6C2A215171A24E5A9DCB28E7A2 das vom Benutzer eingegebene Passwort ist oder nicht.

HEY! Woher kennst Du mein Passwort? face-wink