Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z crypt() i .htpassword
Forum PHP.pl > Forum > PHP
nexis
Cytat
Witam,

Mam dwa pytania:

1.
Tworzac pliki z haslami dostepu uzywajac Apache narzedzia htpasswd dostaje w rezultacie takie haslo:

$apr1$Oh/.....$80qU8cqq3Ain1PJ9M6MIY/

dodam ze kodowane haslo to : password winksmiley.jpg

w dokumentacji Apache pisza ze ich narzedzie uzywa algorytmu Crypt MD5.

Lecz teraz mam problem bo nie wiem w jaki sposob ze skryptu zakodowac podane haslo przez usera funkcja crypt() bym dostal haslo: password tak zakodowane jak htpasswd Apache koduje.

W dokumentacji php podaja:

Cytat
CRYPT_STD_DES - Standard DES-based encryption with a two character salt
CRYPT_EXT_DES - Extended DES-based encryption with a nine character salt
CRYPT_MD5 - MD5 encryption with a twelve character salt starting with $1$
CRYPT_BLOWFISH - Blowfish encryption with a sixteen character salt starting with $2$




Co jest Salt w moim hasle? Bo Co bym nie podawal jako drugi argument funkcji crypt() to i tak dostaje caly czas inny string niz ten zakodowany przez Apache htpasswd? :?


Może to pomoże:

[php:1:2ac28b0d94]<?php
$uzytkownik="neXis";
$haslo="haselko";
$ht_pass = crypt($haslo,substr($haslo,0,2));
$plik = fopen(".htpasswd","w");
fwrite($plik,"$uzytkownik:$haslo");
fclose($plik);
?>[/php:1:2ac28b0d94]

---
wydzielone z wątku o pierwiatku 3 stopnia na prośbę evo. ( scanner )
evo
Cytat
Tzn., że kodowanie hasła dla htpasswd odbywa się przy pomocy losowo wygenerowanego ciągu $salt? 8O


wiem winksmiley.jpg chodzi o to ze salt jest zawsze ukryte w stringu zakodowanym lecz ja nie wiem co w wyzej podanym przeze mnie hasle jest salt?

jesli np. koduje,my haslo crypt() bez trzeciego parametru to dwie piersze litery sa salt.

w moim przykladzie nie wiem co jest salt bo nic mi nie wychodzi i nie pasuje do tego co mowi manual :?




@kszychu
md5() nic mi nie da bo na pierszy rzut oka widac ze nie jest to string kodowany md5() .no chyba ze sie myle i tzeba jakos polaczyc md5() z crypt() jesli tak to prosil bym o przyklad.




z gory dziekuje i pozdrawiam
evo
evo
Cytat
Cytat
Co jest Salt w moim hasle? Bo Co bym nie podawal jako drugi argument funkcji crypt() to i tak dostaje caly czas inny string niz ten zakodowany przez Apache htpasswd?


Może to pomoże:

[php:1:32b14b98bc]<?php
$uzytkownik="neXis";
$haslo="haselko";
$ht_pass = crypt($haslo,substr($haslo,0,2));
$plik = fopen(".htpasswd","w");
fwrite($plik,"$uzytkownik:$haslo");
fclose($plik);
?>[/php:1:32b14b98bc]


zwroc uwage na to:

Cytat
CRYPT_STD_DES - Standard DES-based encryption with a two character salt
CRYPT_EXT_DES - Extended DES-based encryption with a nine character salt
CRYPT_MD5 - MD5 encryption with a twelve character salt starting with $1$
CRYPT_BLOWFISH - Blowfish encryption with a sixteen character salt starting with $2$

[manual:32b14b98bc]crypt[/manual:32b14b98bc]

oraz na moje haslo:

$apr1$Oh/.....$80qU8cqq3Ain1PJ9M6MIY/


ktore w pliku wyglada tak:

Cytat
user:$apr1$Oh/.....$80qU8cqq3Ain1PJ9M6MIY/


wiec salt na 100% nie sa dwie piersze litery!


Normalnie powinny byc 12 znakow zaczynajacych sie na $1$ lecz u mnie jest $apr1$ :?



o co w tym wszystkim chodzi :?



pozdrawaim
evo
evo
pls pomozcie mi z pytaniem 1. Jest to bardzo wazne dla mnie a zawislem na tym i nic nie moge wymyslec sad.gif


Z gory dziekuje i pozdrawiam
evo
hwao
Cytat
w dokumentacji Apache pisza ze ich narzedzie uzywa algorytmu Crypt MD5.

Slyszales kiedys o rozkodowani hash'u?
evo
nie bardzo wiem o co ci chodzi :? mogl bys prosze wyjasnic .
hwao
Nie wiem jak "Crypt MD5" ma sie do MD5, ale MD5 jest hashem (sposobem zakodowania takim ze nie da sie rozkodowac).
Jedyny sposob na spradzenie czy tam masz wpisane password jest podanie password zahashowanie go i porownanie
evo
Cytat
Nie wiem jak "Crypt MD5" ma sie do MD5, ale MD5 jest hashem (sposobem zakodowania takim ze nie da sie rozkodowac).
Jedyny sposob na spradzenie czy tam masz wpisane password jest podanie password zahashowanie go i porownanie


Nie nooo 8O Zalamales mnie twoja wypowiedzia!


Jesli bys przeczytal uwaznie moje pytanie, ktore moze zle sformulowalem winksmiley.jpg (a moze i nie), to bys wiedzial ze ja nie chce tego rozkdowywac!

chodzi mi w jaki sposob zmoge zakodowac haslo "password" w taki spsob bym dostal zakodowany hash w postaci takim jakie mam w plikach .htpasswd ktore tworzone byly narzedziem Apache htpasswd.


wiem ze crypt() ale nie moge zalapac co jest salt a co haslem

zakodowane haslo o tekscie "password" podalem na poczatku .


pozdrawiam
evo
:?
elessar
Hey.

Zobacz to sobie: http://www.thewebmasters.net/php/Htpasswd-0_9.tar.gz
Moze wpadniesz na jakis pomysl.
evo
dzieki ... lecz ta klasa tez mi nic nie pomogla bo jej autor wyszedl z zalozenia ze pliki htpasswd sa kodowane standartowo(unix) lub na win32 z parametrem -d.

Co oznacza ze piersze dwie litery zakodowanego stringa sa salt.

Ja mam problem bo pliki .htpasswd sa kodowane przez htpasswd na unixie z parametrem -m lub bez na win32 co daje nam modyfikowany algorytm crypt przez md5..czy cos podobnego :wink:


na php.net pisza ze w crypt_md5 salt ot 12 liter poprzedzonych $1$ lecz moje zakodowane hasla wygladaja inaczej: $apr1$Oh/.....$80qU8cqq3Ain1PJ9M6MIY/ :?

i teraz nie wiem co zrobic by:

[php:1:cf9617d8b2]<?php
'$apr1$Oh/.....$80qU8cqq3Ain1PJ9M6MIY/'==crypt('password','questionmark.gif?')

?>[/php:1:cf9617d8b2]

wiem ze to co napisalem obok to bzdura bo string z pliku .htpasswd nie jest w calosci kodowanym haslem.

Czesc jego to salt a czesc to haslo lecz szukam ,szukam i szukam i nigdzie nic nie moge znalezc co jest czym?



Pozdrawiam
evo
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.