Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ SHA1 - dziwne działanie

Napisany przez: multiqlti 18.09.2019, 09:36:44

Podpowiedzcie mi czemu te 2 wartości nie są taki same ?!

Tworząc usera i hasło dla niego używam :

  1. $password_trim = http://www.php.net/trim($_POST['password']);
  2. $password = SHA1(mysqli_real_escape_string($conn, $password_trim));

gdzie $_POST['password'] jest z formularza

w innym miejscu w panelu admina jest możliwość zmienić hasło dla usera :

używam :
  1. $password_trim = http://www.php.net/trim($_GET['column_value']);
  2. $column_value = SHA1(mysqli_real_escape_string($conn, $password_trim));

gdzie $_GET['column_value'] jest z formularza


oba stringi podaje tej samej "obróbce" przed dodaniem do bazy danych
hasło wklejam , nie przepisuje , więc nie ma mowy o literówce
i oba hashe sa inne sad.gif

Pomińmy dyskusje o używaniu SHA1 - to jest czysty eksperyment i docelowo będzie SHA256 lub inne

Napisany przez: nospor 18.09.2019, 09:56:04

Po pierwsze wywal to
mysqli_real_escape_string
jako ze jest totalnei zbedne

Jesli potym ci nie bedzie nadal dzialac to pokaz var_dump z obu wartosci

Napisany przez: Tomplus 18.09.2019, 10:31:50

Oba stringi są takie same mówisz o $password_trim?
Sprawdź czy mysqli_real_escape_string($conn, $password_trim) jest takie samo?

Napisany przez: multiqlti 18.09.2019, 11:28:16

Cytat(nospor @ 18.09.2019, 10:56:04 ) *
Po pierwsze wywal to
mysqli_real_escape_string
jako ze jest totalnei zbedne

Jesli potym ci nie bedzie nadal dzialac to pokaz var_dump z obu wartosci


Wywaliłem escape'y

Nadal nie działa jak powinno , ale zauważyłem pewną prawidłowość :

jesli używam hasła typu "q"
to oba skrypty dają ten sam hash
string(40) "22ea1c649c82946aa6e479e1ffd321e4a318b1b0"
string(40) "22ea1c649c82946aa6e479e1ffd321e4a318b1b0"

ALE jeśli użyję hasła typu "f#dtj!256"
to hashe się różnią :
string(40) "4a0a19218e082a343a1b17e5333409af9d98f0f5"
string(40) "5101acc07653f52e6fab28676f16b0f3acc0f22b"

Napisany przez: viking 18.09.2019, 11:31:53

A czemu po prostu nie użyjesz password_hash?

Napisany przez: multiqlti 18.09.2019, 11:43:09

Cytat(viking @ 18.09.2019, 12:31:53 ) *
A czemu po prostu nie użyjesz password_hash?


Pewnego dnia użyje , na razie musze rzeźbić w g.... (sprzed ok 20 lat)
Zajęłoby mi cała stronę opisywać czemu pytam o SHA1. Taki stan zastałem i tymczasowo muszę zrobić możliwość zmiany hasła.
Cały projekt będzie zbudowany od nowa wkrótce i wykorzystamy nowsze standardy.

Cytat(Tomplus @ 18.09.2019, 11:31:50 ) *
Oba stringi są takie same mówisz o $password_trim?
Sprawdź czy mysqli_real_escape_string($conn, $password_trim) jest takie samo?



ciekawe exclamation.gif
Dzięki za hinta , trim ucinał mi hasło tzn z "f#dtj!256" robił "f"

Wywaliłem TRIMa i nadal źle hashuje sad.gif

Napisany przez: trueblue 18.09.2019, 11:44:56

Hash 4a0a19218e082a343a1b17e5333409af9d98f0f5 to hash dla pojedynczej litery f.
Gdzieś następuje obcięcie stringu.

Napisany przez: multiqlti 18.09.2019, 11:50:06

Cytat(trueblue @ 18.09.2019, 12:44:56 ) *
Hash 4a0a19218e082a343a1b17e5333409af9d98f0f5 to hash dla pojedynczej litery f.
Gdzieś następuje obcięcie stringu.


czy to oznacza , że np # nie można przesyłać GET/POST w URL ?
Bo ucina po "f"

zmien.php?password=f#dtj!256

  1. $pass = $_GET['password'];
  2. http://www.php.net/echo "pass = ".$pass;
  3. $column_value = SHA1($pass);
  4. http://www.php.net/echo "Column_value: ".$column_value;
  5. http://www.php.net/var_dump($column_value);


daje mi :

pass = f
Column_value: 4a0a19218e082a343a1b17e5333409af9d98f0f5
string(40) "4a0a19218e082a343a1b17e5333409af9d98f0f5"

Napisany przez: nospor 18.09.2019, 11:53:46

Tak, # jest znakiem specjalnym w url.
Dlatego juz dawno prosilem o VAR_DUMP tych danych z get/post no ale po co... jak z dziecmi tongue.gif

Napisany przez: multiqlti 18.09.2019, 11:55:42

Cytat(nospor @ 18.09.2019, 12:53:46 ) *
Tak, # jest znakiem specjalnym w url.
Dlatego juz dawno prosilem o VAR_DUMP tych danych z get/post no ale po co... jak z dziecmi tongue.gif


a jakie są obecne "prawidła" jeśli chodzi o używanie znaków specjalnych w url ?
Trzeba je "zakodować" i używać czy w hasłach nie powinny być używane ?

Napisany przez: nospor 18.09.2019, 11:58:28

Po pierwsze to sie nie przysla hasla URLem...
I tak, znaki specjalne sie escapuje w url. chociazby url_encode

Napisany przez: viking 18.09.2019, 11:59:52

var_dump(urlencode('f#dtj!256'));

var_dump(urldecode('f%23dtj%21256'));

Napisany przez: dublinka 18.09.2019, 14:25:01

Cytat(multiqlti @ 18.09.2019, 11:55:42 ) *
a jakie są obecne "prawidła" jeśli chodzi o używanie znaków specjalnych w url ?


https://stackoverflow.com/questions/1856785/characters-allowed-in-a-url/1856809

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)