| 

.NET C# Java Javascript Exception

2
Passwörter einfach so in eine Datenbank zu legen finde ich zu unsicher. Wie kann ich die verschlüsseln?
News:
29.04.2011
TTQQ 21 2
5 Antworten
2
PHP bietet da mehrere Möglichkeiten. Eine davon wäre z.B. MD5.

Andere sind natürlich auch verwendbar. Wichtig ist meiner Meinung nach, dass keine "Entschlüsselung" des Passworts möglich ist, man als nur mit Checksummen arbeitet. In diesem Zusammenhang sollte man auch immer mit einem Salt arbeitet.
29.04.2011
SensenMannLE 1,2k 2 9
2
Für Passwörter nimmt man Hashing, keine Verschüsselung, da du die Passwörter ja nicht wieder zurückschlüsseln willst. Und auf jeden Fall SHA anstatt MD5 nutzen. MD5 ist mittlerweile reproduzierbar!

"Es ist aber dank der Kollisionsangriffe in vielen Fällen möglich, zwei Dokumente zu erstellen, die den gleichen MD5-Hash ergeben, dann das erste, legitime Dokument signieren zu lassen, und anschließend dieses durch das zweite, gefälschte Dokument auszutauschen. Vor diesem Hintergrund ist von einer Weiterverwendung von MD5 abzuraten." - Wikipedia


Hier also SHA256 oder SHA512 nutzen und diese Hashes dann in der Datenbank ablegen. Bei erneuter Eingabe des Passworts machst du darauf ebenfalls wieder einen SHA Hash und vergleichst diesen mit den, der in der Datenbank hinterlegt ist.
11.07.2011
Dustin Klein 2,9k 2 9
1
Die Frage ist ob du verschlüsseln oder hashen möchtest. Mußt du das Klartextpasswort nochmal entschlüsseln können, musst du eine (symmetrische) Verschlüsselung nehmen, siehe zum Beispiel:
http://de3.php.net/manual/en/book.mcrypt.php

Solltest du das Kennwort nicht wieder entschlüsseln müssen, sondern mußt später nur wissen ob ein vom Nutzer eingegebenes Passwort mit dem gespeicherten übereinstimmt, dann solltest du einen Hash-Algorithmus nutzen, wenn es geht nicht MD5, sondern direkt SHA1 oder noch besser SHA2, wie bereits gesagt mit einem Salt und eventuellen Runden (also statt einmal SHA2 darauf anzuwenden hashst du es einfach 1000 Mal):
http://de3.php.net/manual/en/book.hash.php
08.07.2011
911795903 11 1
1
um etwaigen md5 reverse datenbanken zuvor zu kommen, habe ich mir als best practise angewöhnt immer die kombination aus benutzernamen und passwort als md5 zu speichern. also angenommen der benutzername ist fritz und das passwort walter, mache ich ein´ md5 über den string "fritzwalter", weil die wahrscheinlichkeit einfach geringer ist, dass dieser "lange string" in solchen datenbanken existiert. (das jemand den namen walter als ge-md5-tes passwort in einer reverse datenbank gespeichert hat, ist dann noch nicht gerade unwahrscheinlich ...)

aber zur eigentlichen frage :) :

bei postgres könnte man das dann z.b. so machen (da bringt die datenbank die funktionalität schon mit):

insert into meinebenutzer (name, pwd) values ('fritz', md5('fritz' || 'walter'));


gruß

limepix
11.07.2011
limepix 81 4
0
29.04.2011
Lars 251 1 5
Marvin Steppat 4,0k 1 4 8

Stelle deine Php-Frage jetzt!