Forum: PC-Programmierung Passwort für .htusers in php erzeugen


von Pascal (Gast)


Lesenswert?

Nabend!

Ich versuche seit Tagen erfolglos meine Passwörter mit crypt zu 
verschlüsseln.

Aber irgendwie brauch ich mal nen Denk-Schubs.

Mein Test-PHP-Script sieht so aus:
1
<?php
2
echo crypt($x, CRYPT_SALT_LENGTH)."<br>";
3
echo crypt($x, CRYPT_STD_DES)."<br>";
4
echo crypt($x, CRYPT_EXT_DES)."<br>";
5
echo crypt($x, CRYPT_MD5)."<br>";
6
echo crypt($x, CRYPT_BLOWFISH)."<br>";
7
echo crypt($x);
8
?>
Ich gebe das zu verschlüsselnde Passwort mit "crypt.php?x=passwort" im 
Browser ein und erhalte dann 6 Varianten dieses Passwortes. Aber 
keines wird vom Apachen als richtig erkannt.

Hier noch meine .htusers-Datei, die ich zu Testzwecken benutze:
1
user1:eOPiDUHy0Frnm
2
user2:MmavXgWYzNsF0
3
user3:gwfzGt.5PBn3vxzmL1luy.
Wenn ich das Passwort via Selfhtml-Homepage erzeuge, dann geht alles wie 
gewünscht!

Was mich auch wundert, ist dass das von Selfhtml erzeugte Passwort 13 
Zeichen lang ist. Mit crypt("passwort") bekomme ich ein 22 Zeichen 
langes Passwort.

Bei user1 habe ich den vorderen Teil abgeschnitten, sodass 13 Zeichen 
verbleiben
bei user2 habe ich den hinteren Teil abgeschnitten, sodass 13 Zeichen 
verbleiben
bei user3 habe ich alles so gelassen wie es ist.

Aber keine der Varianten funktioniert. Wer weiß da Rat?

von Troll (Gast)


Lesenswert?

Apache doku mal bemüht??...

von Pascal (Gast)


Lesenswert?

In der Doku steht, dass das Passwort mit crypt() erzeugt werden kann.

Mache ich ja auch, z.B. crypt("geheim");

Da kommt dann "$1$qYL6qU8k$MXN.S6qpPrg6fucU20m2w/" raus
                           ^^^^^^^^^^^^^^^^^^^^^^
Laut Doku ist das Passwort ab hier enthalten. Alles davor ist 
Salt-Gedöns.

Kern meiner Frage ist, wie erzeuge ich daraus den 13 Zeichen langen 
Crypt-Code?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Pascal schrieb:
> Kern meiner Frage ist, wie erzeuge ich daraus den
> 13 Zeichen langen Crypt-Code?
Du musst den Salt vorgeben:
http://www.htaccesstools.com/articles/create-password-for-htpasswd-file-using-php/

von Pascal (Gast)


Lesenswert?

> Du musst den Salt vorgeben

Jetzt läuft es... Ich glaub's nicht!
Danke dir vielmals!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Pascal schrieb:
> Ich glaub's nicht

Wieso nicht? Woher soll der Server den den kenne wenn er weder
a) angehängt ist
 noch
b) per Konvetion gegeben ist

Die Anleitung findet man übrigens auch wenn man einfach bei Google 
htaccess php crypt eingibt ;-)

von Pascal (Gast)


Lesenswert?

Läubi .. schrieb:
> Wieso nicht? Woher soll der Server den den kenne wenn er weder
> a) angehängt ist
>  noch
> b) per Konvetion gegeben ist

zu a) der Salt steht doch im Klartext am Anfang des verschlüsselten 
Passwortes. Den braucht sich der Server nur vorn "ablesen".

zu b) crypt() bringt ohne Salt-Parameter schon von sich aus einen 
Zufalls-Salt mit (Test: einfach dasselbe Passwort wiederholt 
verschlüsseln lassen -> ist jedesmal ein anderes Ergebnis). Deswegen bin 
ich davon ausgegangen, dass ich den Salt nicht noch explizit vorgeben 
muss (KISS-Prinzip). Aber mit dem Default-Salt geht's anscheinend nicht 
- warum auch immer.

Nunja, jetzt läuft es und ich bin zufrieden :)


Hier noch meine Umsetzung (als Salt gebe ich eine 2stellige Zufallszahl 
zwischen 10 und 99 vor)
1
<?php
2
$u="user";
3
$p="password";
4
echo "$u:".crypt($p,rand(10,99));
5
?>

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.