Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jaka implementacja OLD_PASSWORD()
mxbm
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 1.04.2010

Ostrzeżenie: (0%)
-----


Witam,

Jako że chcę haszować string podany przez użytkownika przed porównaniem ich w bazie potrzenuję użyć funkcji OLD_PASSWORD();

Poniższa implementacja...

  1. function mysql_old_password_hash($input)
  2. {
  3. $nr = 1345345333; $add = 7; $nr2 = 0x12345671; $tmp = null;
  4. $inlen = strlen($input);
  5. for ($i = 0; $i < $inlen; $i++) {
  6. $byte = substr($input, $i, 1);
  7. if ($byte == ' ' || $byte == "\t") continue;
  8. $tmp = ord($byte);
  9. $nr ^= ((($nr & 63) + $add) * $tmp) + (($nr << 8) & 0xFFFFFFFF);
  10. $nr2 += (($nr2 << 8) & 0xFFFFFFFF) ^ $nr;
  11. $add += $tmp;
  12. }
  13. $out_a = $nr & ((1 << 31) - 1);
  14. $out_b = $nr2 & ((1 << 31) - 1);
  15.  
  16. if ($hex) return $output;
  17. return hex_hash_to_bin($output);
  18. }


działa w porządku na moim localhoście ze starym phpem 5.2.5, natomiast "na produkcji" z php 5.2.11 już nie - tj zwracany jest błędny wynik - inny string niż powinien.

Pytanie - co mogę zmienić w tym skrypcie żeby to naprawić? Ktoś wie jakie są różnice pomiędzy tymi wersjami php mogące wpłynąć na wynik działania tej funkcji - ew może ktoś posiada inną implementację będącą odporną na zmienę wersji php?

Proszę o pomoc.

Ten post edytował mxbm 1.04.2010, 20:51:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




proszę o dodanie odpowiedniego bbcode i zapoznanie się z: Temat: Jak poprawnie zada pytanie, w przeciwnym razie zamknę temat.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:29