Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jaka implementacja OLD_PASSWORD()
Forum PHP.pl > Forum > Przedszkole
mxbm
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.
piotrooo89
proszę o dodanie odpowiedniego bbcode i zapoznanie się z: Temat: Jak poprawnie zada pytanie, w przeciwnym razie zamknę temat.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.