[PHP] Crypt() - welches Salt

anddie

Well-known member
ID: 171
L
3 Mai 2006
2.267
132
Hi,

eigentlich muss ich Passwörter mit Unix-Crypt verschlüsselt ablegen (fragt nicht, wieso nicht md5). Bei PHP gibt es ja ebenfalls die crypt()-Funktion.
Wenn ich da für einen String das mehrfach ausführe, bekomme ich interessanterweise immer unterschiedliche Werte (und damit nützt es mir nix)
Mittlerweile hab ich auch rausgefunden, wenn ich ein Salt als Parameter mit angebe, dass dann immer der gleiche verschlüsselte Wert rauskommt.

Jetzt würde mich nur interessieren, was der Unterschied zwischen diesen 4 verschiedenen Salts ist, bzw. welches ich in Bezug auf Zukunftssicherheit auch nutzen sollte.

anddie
 
Jetzt würde mich nur interessieren, was der Unterschied zwischen diesen 4 verschiedenen Salts ist, bzw. welches ich in Bezug auf Zukunftssicherheit auch nutzen sollte.
neija das sind eben 4 komplett verschiedene Verfahren:
DES --> Ein Verschlüsselungsalgorithmus der mitlerweile von AES abgelöst wurde
EXT_DES --> irgendeine Modifikation
MD5 --> Hashing-Algorithmus, der weit verbreitet ist, aber mehr Kollisionen hat als der neueste SHA
Blowfish --> Verschlüsselungsalgorithmus

Ich verstehe nur folgendes nicht: Anmerkung: Es existiert keine decrypt Funktion, da crypt() eine Einweg-Verschlüsselung ist.
DES ist keine Hash-Funktion, dort bezeichnet als Einweg-Verschlüsselung :roll:

wieso musst du crypt nutzen und darfst nicht md5 nehmen?
er wird wohl seine Gründe haben :roll:
 
Weil die Daten an eine andere Applikation exportiert werden müssen und die frisst nur Klartext oder Unix-crypt verschlüsselte Daten.

anddie
 
im Wikipedia-Artikel zu Crypt sind nochmal alle Methoden etwas erläutert
Danke. Werd das wohl noch 5x lesen müssen, um es zu verstehen, aber es ist zumindest ausführlicher, als bei php.net.

Aber eines ist mir bei php.net gerade noch aufgefallen:
Ebenso werden nur die ersten acht Zeichen von str berücksichtigt, verwenden Sie also einen längeren String, der mit den gleichen 8 Buchstaben beginnt, so erhalten Sie denselben Rückgabewert (sofern Sie ebenfalls den gleichen Salt nutzen).
Heißt das jetzt, wenn ich 2 Passwörter habe, die meinetwegen ASDFghjk123 und ASDFghjk456 lauten, dass ich dann mit crypt() jeweils das Gleiche rausbekomme? Kann es aktuell net wirklich testen.

anddie
 
Heißt das jetzt, wenn ich Passwörter habe, die meinetwegen ASDFghjk123 und ASDFghjk456 lauten, dass ich dann mit crypt() jeweils das Gleiche rausbekomme? Kann es aktuell net wirklich testen.

PHP:
<?php

echo crypt('12345678910', 'tobi'); //tor9xGft4sjAE
echo crypt('12345678911', 'tobi'); //tor9xGft4sjAE

?>

uff 8O
also ziemlich ungeeignet das mcrypt
 
Grund =
Weil die Daten an eine andere Applikation exportiert werden müssen und die frisst nur Klartext oder Unix-crypt verschlüsselte Daten.

Es gibt Anwendungen, die kommen mit Hashs nicht klar, weil sie einfach keine Funktion bereitstellen diese zu "vergleichen". (etwas ältere vorallem)

mfg
Refi
 
also ziemlich ungeeignet das mcrypt
Merke ich auch gerade.
Und ich stelle hier gerade fest, unter Solaris gibts scheinbar nur Standard-DES als Salt.

Muss ich mal noch rausfinden, ob ich das crypt vom BS verwenden kann und dieses auch längere Passwörter korrekt verschlüsselt (da Perl aber auch nur 8 Zeichen verschlüsselt, bezweifel ich das jetzt stark). Und vor allem, wie ich das dann aufrufe.

anddie