Programmation » Hash ELF en PHP
Hash ELF en PHP
Publié le 11/08/2008 @ 17:22:37,
Par zionJe dois convertir un code simplissime de pascal en PHP:
Et apparemment je me plante qqpart. Déjà avec ce le typage en PHP je rajoute quelques petits & 0xFFFFFFFF pour m'assurer que l'on reste sur 32 bits mais il me manque inévitablement quelque chose ...
- function ELFHash(const Str : String) : Cardinal;
- var
- i : Cardinal;
- x : Cardinal;
- begin
- Result := 0;
- for i := 1 to Length(Str) do
- begin
- Result := (Result shl 4) + Ord(Str[i]);
- x := Result and $F0000000;
- if (x <> 0) then
- begin
- Result := Result xor (x shr 24);
- end;
- Result := Result and (not x);
- end;
- end;
- function GenerateELF($AFile)
- {
- $result = 0;
- $i = 0;
- $x = 0;
- $str = file_get_contents($AFile);
- for ($i=0; $i<strlen($str); $i++)
- {
- $chr = $str[$i];
- $result = ($result & 0xFFFFFFF) << 4;
- $result = ($result + ord($chr)) & 0xFFFFFFFF;
- $x = $result & 0xF0000000;
- if ($x != 0)
- $result = ($result ^ ($x >> 24)) & 0xFFFFFFFF;
- $result = (int)($result & (~$x));
- }
- return $result;
- }
Et apparemment je me plante qqpart. Déjà avec ce le typage en PHP je rajoute quelques petits & 0xFFFFFFFF pour m'assurer que l'on reste sur 32 bits mais il me manque inévitablement quelque chose ...
Je suis le Roy
Hash ELF en PHP
Publié le 11/08/2008 @ 18:28:15,
Par zionTrouvé, c'est le $x >> 24 qui pose soucis vu que PHP traitant tout comme du signed, si on arrive en négatif le signe est récupéré à chaque >>...
Donc avec un : (($x >> 24) & 0x000000FF)
Ca roule!
Donc avec un : (($x >> 24) & 0x000000FF)
Ca roule!
Je suis le Roy
Hash ELF en PHP
Publié le 11/08/2008 @ 18:35:17,
Par ovhPHP traitant tout comme du signed
P'tain c'est bon à savoir ça
Merci pour l'info
Je n'ai rien à voir avec www.ovh.com
Hash ELF en PHP
Publié le 11/08/2008 @ 18:52:46,
Par zionL'unsigned n'existe pas en PHP
Encore une nouvelle raison de moins en faire
Encore une nouvelle raison de moins en faire
Je suis le Roy