crc32
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
crc32 — Calcule la somme de contrôle CRC32
Description
$str
)
Génère la somme de contrôle cyclique CRC32, calculée sur 32 bits, et
appliquée à la chaîne str
. Cette fonction est
généralement utilisée pour valider l'intégrité de données durant une
transmission.
En raison du fait que le type entier de PHP est signé, la plupart des sommes de contrôle crc32 se trouve être des entiers négatifs sur les plateformes 32bits. Sur des installations 64bits, tous les résultats de la fonction crc32() seront des entiers positifs.
Aussi, vous devez utiliser le formatteur "%u" de la fonction sprintf() ou de la fonction printf() pour récupérer une représentation en chaîne de caractères de la somme de contrôle non-signée de la fonction crc32() au format décimal.
Pour une représentation hexadécimale de la somme de contrôle, vous pouvez utiliser soit le formatteur "%x" de la fonction sprintf() ou de la fonction printf() , ou bien les fonctions de conversion dechex(), les deux solutions prennent soin de convertir le résultat de la fonction crc32() en un entier non-signé.
Sur les installations 64bits, la fonction retournera aussi des entiers négatifs pour des valeurs retournées très grandes, mais cela va casser la conversion en héxadécimal en ayant une position 0xFFFFFFFF######## supplémentaire. Sachant que la représentation décimale semble être le cas le plus largement utilisé, nous avons décidé de ne pas la casser même si elle casse directement la comparaison décimale dans 50% des cas lors d'un passage de 32 à 64bits.
Avec du recul, le fait que la fonction retourne un entier n'était peut-être pas la meilleure idée, et retourner dés le début une représentation hexadécimale sous la forme d'une chaîne de caractères (tel que le fait la fonction md5()), aurait été meilleure solution.
Pour une solution plus pérenne, vous pouvez vous retourner vers la fonction
générique hash(). hash("crc32b", $str)
va retourner la même chaîne de caractères que str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)
.
Exemples
Exemple #1 Afficher une somme de contrôle CRC32
Cet exemple illustre comment afficher la somme de contrôle avec la fonction printf() :
<?php
$checksum = crc32("Le vif zéphyr jubile sur les kumquats du clown gracieux.");
printf("%u\n", $checksum);
?>
Version en cache
18/12/2024 18:32:15 Cette version de la page est en cache (à la date du 18/12/2024 18:32:15) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-crc32.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.