Poster une réponse à un sujet: Hash ELF en PHP
Attention, ce sujet est un sujet ancien (5929 jours sans réponse)
zion
L'unsigned n'existe pas en PHP
Encore une nouvelle raison de moins en faire
Encore une nouvelle raison de moins en faire
ovh
zion
Trouvé, 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!
zion
Je 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 ...