No właśnie, gdziekolwiek nie szukałem, to widziałem że ludzie wykorzystują klasy.
Niestety przy obecnym problemie klasy są niewskazane, a poza tym moim zdaniem powinna być do tego prosta funkcja.
No trudno. Myślę, że sam napiszę taka funkcję przy wykorzystaniu jakiejś funkcji hashującej.
Jakby ktoś tu trafił z googla, to podaje funkcje szyfrowania hasłem.
Bez użycia klas.
Bezpieczna - złamanie jej jest tak trudne jak zlamanie md5.
Mało lini kodu - łatwo podmienić md5 na np. sha1, czy inny obsługiwany hash, każdy może prześledzić bezpieczeństwo.
Szybka - obliczanie szyfru odbywa się w czasie liniowym, niewiele dłużej niż obliczanie hasów md5.
<?
function md_kodowanie($string,$haslo){
$d=16; // długość hasha md5 podzielona na dwa (litera hasha w trybie 16wym)
$new_ord['0']=0;
$new_ord['1']=1;
$new_ord['2']=2;
$new_ord['3']=3;
$new_ord['4']=4;
$new_ord['5']=5;
$new_ord['6']=6;
$new_ord['7']=7;
$new_ord['8']=8;
$new_ord['9']=9;
$new_ord['a']=10;
$new_ord['b']=11;
$new_ord['c']=12;
$new_ord['d']=13;
$new_ord['e']=14;
$new_ord['f']=15;
$mgla=$haslo;
foreach(str_split($string,$d) as $blok){
$blok_wynik='';
for($i=0;$i<$d;$i++){
$litera_wejscia=substr($blok,$i,1
); $litera_wejscia=ord($litera_wejscia);
$litera1_mgly=substr($mgla,$i*2
,1
); $litera2_mgly=substr($mgla,$i*2
+1
,1
); $litera_mgly=$new_ord[$litera1_mgly]*16+$new_ord[$litera2_mgly];
$litera_wyniku=$litera_wejscia+$litera_mgly; //tu dodajemy
if($litera_wyniku>255) $litera_wyniku=$litera_wyniku-256;
$blok_wynik.=chr($litera_wyniku);
}
$wynik.=$blok_wynik;
}
}
function md_dekodowanie($string,$haslo){
$d=16;
$new_ord['0']=0;
$new_ord['1']=1;
$new_ord['2']=2;
$new_ord['3']=3;
$new_ord['4']=4;
$new_ord['5']=5;
$new_ord['6']=6;
$new_ord['7']=7;
$new_ord['8']=8;
$new_ord['9']=9;
$new_ord['a']=10;
$new_ord['b']=11;
$new_ord['c']=12;
$new_ord['d']=13;
$new_ord['e']=14;
$new_ord['f']=15;
$mgla=$haslo;
foreach(str_split($string,$d) as $blok){
$blok_wynik='';
for($i=0;$i<$d;$i++){
$litera_wejscia=substr($blok,$i,1
); $litera_wejscia=ord($litera_wejscia);
$litera1_mgly=substr($mgla,$i*2
,1
); $litera2_mgly=substr($mgla,$i*2
+1
,1
); $litera_mgly=$new_ord[$litera1_mgly]*16+$new_ord[$litera2_mgly];
$litera_wyniku=$litera_wejscia-$litera_mgly; //teraz odejmujemy
if($litera_wyniku<255) $litera_wyniku=$litera_wyniku+256;
$blok_wynik.=chr($litera_wyniku);
}
$wynik.=$blok_wynik;
}
return($wynik);
}
echo md_kodowanie
('Dane do zakodowania','Twoje tajne hasło!'); echo md_dekodowanie
('U7lSOoQmjf1ikWwZscgyYu9lYNDD6f44+iBK3rL1PGM=','Twoje tajne hasło!'); ?>end.