Original von Browser-Games World
Werde ich demnächst auch machen wobei ich den ASCII Wert multipliziere mit eine Mischung
aus der Wurzel des ASCII-Wertes und der Position des Zeichens im String und einem Multiplikator
Selbstgebaute Kryptolösungen sollte man nur verwenden, wenn man Ahnung von der Materie hat. Die entsprechende Personengruppe umfasst vielleicht ein paar hundert Algebraiker weltweit, wenn überhaupt. Und selbst dann ist noch nicht garantiert, dass man nicht doch einen Fehler gemacht hat. Dein Verfahren basiert im wesentlichen darauf, dass es keiner kennt. Das ist kein sinnvoller Ansatz für Sicherheit. Abgesehen davon klingt es nicht gerade robust.
Passwörter würde ich genausoverschlüsseln und nochmal MD5 rüberlaufen lassen
Das ist nicht nötig. Wenn Du nur die gehashten Werte speicherst, brauchst Du vorher nicht zu verschlüsseln, das steigert die Sicherheit nicht aber öffnet mehr Raum für Fehler (und Rechenlastverluste). MD5 würde ich übrigens nicht mehr verwenden, auch wenn aktuell noch nicht "mal eben" eine Kollision berechnet werden kann, gilt MD5 prinzipiell als gebrochen und unsicher. Für SHA-1 gibt es auch schon Ansätze, aber die nächsten Jahre kann man das wohl noch verwenden. Ganz paranoide verwenden SHA-256.
Passwörter sollten nie im Klartext gespeichert werden, das versteht sich von selbst. Da es keine Notwendigkeit gibt, dass man das Passwort als Betreiber kennt, reicht es den Hash zu speichern (Salt dazu um Rainbowtables auszutricksen. Ein Salt macht btw. die Hashfunktion nicht unsicher, wenn dem so wäre wäre sie nicht besonders Kollisionsreistent und damit unbrauchbar). Mailadresse usw. zu verschlüsseln ist nur bedingt sinnvoll, da wie gesagt die Daten ja doch mehr oder weniger häufig im Klartext benötigt werden. Man verhindert vielleicht temporär, dass bei ausgelesener Datenbank ohne kompromittiertem Vollsystem die Mailadresse bekannt wird, aber mal ehrlich: Da die Klartexte wie z.B. die Usernamen sowieso bekannt sind, gibt es eine ganze Menge Angriffsvektoren und einen geschickten Angreifer hält man damit nur kurz auf.
Auf jeden Fall sollte man, wenn man so eine Lösung einsetzt, den ein anderes System oder zumindest einen anderen Schlüssel verwenden als bei wirklich sensiblen Daten, damit, falls die Datenbank kompromittiert ist, nicht das komplette System vor die Hunde geht. Bei manchen System kann bei bekanntem Klar- und Schlüsseltext der Schlüssel berechnet werden und um genau so ein Szenario geht es hier ja.
"Mal eben" eine Rainbowtable für einen bestimmten Salt zu erstellen ist für gängige Hashfunktionen übrigens nicht machbar. Dafür braucht man Spezialhardware und mehrere Monate Rechenzeit. Ginge es schneller, wäre die Hashfunktion als ganzes kompromittiert, denn ein Salt dient doch nur dazu, Wörterbuchattacken für "Passwort" und "Bello" auszuschließen.
edit: Mist, zu langsam. Das kommt davon, wenn man mal seriös antworten will.