Skocz do zawartości
jensej

Czy da się złamać hash PHP?

Polecane posty

Witam.

Załóżmy że mam dwa hasze. Pierwszy z nich jest haszem który powinienem otrzymać (poprawny), a drugi ma być odwzorowaniem tego poprawnego.

a681e6803089bed1dfac6bba1502eda6c717251a82fe04fd6780db713a501864 // poprawny hash

74249b3d2f73e5ea43eba3f181f2624c94f8ceb22d4d56376ccd9cc9c7d3ad8f // generowany hash który powinien być identyczny jak ten wyżej.

Hash generowany jest w ten sposób:

<?php
$id = 123;
$czas = 1493599855;
$static = "ESaKoaIpSK22";
hash("sha256",$id."-".$static."-".$czas); 
?>


Czy ktoś, nie znając stałej $static, jest w stanie jakoś to wygenerować?

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość sohost.pl

Generuje Ci hash w formie sha256, jeżeli nie znajdziesz kodu gdzieś w internecie to nic nie zdziałasz.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Proponuję takie :D

$password = "MojeHasło";
$salt = generatePasswordSalt(5);
$salt = str_replace('\\', "\\\\", $salt);
$hash = md5( md5($salt) . md5( $password ));

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W przypadku hashowania haseł Twoim wrogiem jest szybkość działania funkcji hashującej. Im większa szybkość jej działania, tym hasło zostanie szybciej złamane. Dla haseł zaleca się stosowanie algorytmów które wymagają większej ilości czasu i mocy obliczeniowej.

 

SHA-256 wymaga mniej czasu i mocy obliczeniowej niż bcrypt który używany jest domyślnie w funkcji password_hash. To właśnie dlatego powinieneś używać dla haseł funkcji password_hash a nie algorytmu SHA-256.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Nie wiem co nazywasz złamaniem. Znaleźć argumentu dla wartości oczywiście prosto się nie da, ale w niektórych zastosowaniach np. wydłużanie jest też atakiem (length extension attack).


Jeżeli $static jest tajny, a $id i $czas nie, bo np. implementujesz podpisywanie komunikatu [$id, $czas] kluczem $static i po drugiej stronie robienie czegoś z odebraną parą [$id, $czas] pod warunkiem że pierwsza strona zna prawidłowy klucz $static, prawdopodobnie chcesz użyć HMAC-SHA-256 który robi z kluczem to co trzeba zrobić, a nie zwykłego SHA-256 z kluczem sklejonym z resztą danych.


Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

Nie wiem co nazywasz złamaniem. Znaleźć argumentu dla wartości oczywiście prosto się nie da, ale w niektórych zastosowaniach np. wydłużanie jest też atakiem (length extension attack).
Jeżeli $static jest tajny, a $id i $czas nie, bo np. implementujesz podpisywanie komunikatu [$id, $czas] kluczem $static i po drugiej stronie robienie czegoś z odebraną parą [$id, $czas] pod warunkiem że pierwsza strona zna prawidłowy klucz $static, prawdopodobnie chcesz użyć HMAC-SHA-256 który robi z kluczem to co trzeba zrobić, a nie zwykłego SHA-256 z kluczem sklejonym z resztą danych.

 

tak to podpisywanie komunikatu. Do serwera jest wysyłany czas, id. + ten hash, a serwer sam buduje has na podstawie przesłanego czasu + id + zna $static.

Da się coś zrobić żeby ten $statić złamać w takim wypadku?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×