Hallo,
Oder man macht halt sowas:
$passwort = substr(sha1($_GET['passwort']), 0, 16);Ich kann aber nicht beurteilen, wie sicher/unsicher das ist.
das ist deutlich unsicherer, den der SHA1 Hash besteht aus Hexadezimal, also nur 32 Zeichen anstatt 256 Zeichen.
Dadurch hätte man nur einen Schlüsselraum von: 32^16 = 1,2*10^24
Möglich wäre aber: 3,4*10^38
Also ist der Schlüsselraum um ca. 10^14 mal kleiner.
Also man kann es so machen
C:
for(i=0;i<4;i++)
{
k[i] = (key[(i*4)%lng]<<24)+(key[(i*4+1)%lng]<<16)+(key[(i*4+2)%lng]<<8)+(key[(i*4+3)%lng]);
}
Dabei enthält lng die Länge des PWs.
Wenn es z.B. 7 Zeichen hat, dann würde der 128 Bit Key wie folgt berechnet:
0123 4560 1234 5601
Dabei ist die Zahl (0,1,2,3...) jeweils der x Buchstabe im Key, angefangen beim 0. (ersten) Buchstaben.
Oder man schickt den Key durch den MD5 Algorithmus, als Ausgabe erhält man einen 128 Bit Hash (als Hexadezimal).
Man _muss_ diese Ausgabe als Hexadezimal, und _nicht_ als String betrachten.
Oder noch ne Möglichkeit in PHP:
$key = str2long(substr(str_pad($key, 16, md5($key)),0,16));
str2long(); wandelt den Key in Long Zahlen um.
str_pad(); füllt den $key auf 16 Zeichen auf (mit dem MD5 Hash).
substr(); würde einen zulangen Key auf 16 Zeichen kürzen.
Grüße
Elderan