Posolone MD5

Wstęp

Długo zastanawiałem się nad napisaniem tego małego „how to”, ale w końcu doszedłem do wniosku, że warto. Z biegiem czasu komputery stają się coraz szybsze i szybsze… Dlatego osiąganie dużej ilości (biliony na sekundę) hashy podczas tzw. brute-force jest normalnością. Ponadto pojemne dyski (1,2,3 tb) stały się codziennością i w zupełności wystarczają, żeby trzymać na swoim HDD tablice tęczowe (ang. rainbow tables), jest to nic innego jak baza danych, przechowująca zahashowane ciągi znaków (np. md5-1-7-mixedalpha-all-space co znaczy, że tablica zawiera w sobie większość możliwych zakodowanych haseł, które zawierają od 1 do 7 znaków, małe i duże litery alfabetu (mixedalpha), znaki specjalne i spację ). Dodatkowo przy próbie „złamania” zakodowanego hasła może nam pomóc tzw. metoda słownikowa.


Programowanie

W tym tutorialu (w kodzie przykładowego programu) będziemy korzystać z funkcji hashującej md5(), ale bez problemu można zastosować tu kodowanie sha1().

class saltme {

 var $salt = "425324f475743524f6i9089573";//wymyślamy sobie jakąś sól. musi mieć przynajmniej 22 i nie może zawierać znaków specjalnych

 function salter($password) {

 return crypt(md5($password), '$2a$10

Kod PHP jest wyjątkowo prosty i nie ma co go wyjaśniać (:
Wyjaśnię tylko co oznaczają '$2$10

Kod PHP jest wyjątkowo prosty i nie ma co go wyjaśniać (:
Wyjaśnię tylko co oznaczają '$2$10

Kod PHP jest wyjątkowo prosty i nie ma co go wyjaśniać (:
Wyjaśnię tylko co oznaczają '$2$10$' w funkcji crypt():
$2 - informuję funkcję, że będziemy korzystać z algorytmu blowfish.
$10 - oznacza wykładnik potęgi do, której zostanie podniesiona 2 (10 => 2^10 = 1024)
 w funkcji crypt():
$2 - informuję funkcję, że będziemy korzystać z algorytmu blowfish.
$10 - oznacza wykładnik potęgi do, której zostanie podniesiona 2 (10 => 2^10 = 1024)
 w funkcji crypt():
$2 - informuję funkcję, że będziemy korzystać z algorytmu blowfish.
$10 - oznacza wykładnik potęgi do, której zostanie podniesiona 2 (10 => 2^10 = 1024)
.$this->salt);
 }
}

$salty = new saltme;
 echo $salty->salter('alekot');

Kod PHP jest wyjątkowo prosty i nie ma co go wyjaśniać (:
Wyjaśnię tylko co oznaczają '$2$10$’ w funkcji crypt():
$2 – informuję funkcję, że będziemy korzystać z algorytmu blowfish.
$10 – oznacza wykładnik potęgi do, której zostanie podniesiona 2 (10 => 2^10 = 1024)