crc32

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

crc32Calcula polinômio crc32 de uma string

Descrição

crc32(string $string): int

Gera a soma de verificação de redundância cíclica de 32-bits de comprimento da string. É usado geralmente para validar a integridade de um dado sendo transferido.

Warning

Pelo fato do tipo inteiro do PHP ser com sinal, muitas somas de verificação crc32 resultarão em inteiros negativos em plataformas de 32 bits. Em instalações de 64 bits todos os resultados de crc32() serão inteiros positivos.

Por isso, é necessário usar o formatador "%u" da função sprintf() ou printf() para obter a representação em string da soma de verificação sem sinal da função crc32() em formato decimal.

Para uma representação hexadecimal da soma de verificação, pode-se usar tanto o formatador "%x" de sprintf() ou printf() quanto as funções de conversão dechex(), ambas destas soluções também tomam o cuidado de converter o resultado de crc32() para um inteiro sem sinal.

Foi considerado que instalações de 64 bits também retornassem inteiros negativos para valores mais altos de resultados, porém isto iria quebrar a conversão para hexadecimal, já que os negativos teriam um deslocamento extra de 0xFFFFFFFF######## neste caso. Como a representação hexadecimal parece ser o uso de caso mais comum, decidiu-se não quebrar esta conversão mesmo que ela quebre comparações diretas em decimal em aproximadamente 50% dos casos ao mover de 32 para 64 bits.

Em retrospecto, fazer com que a função retornasse um inteiro talvez não tenha sido a melhor ideia, e retornar uma representação hexadecimal em string diretamente (como, por exemplo, a função md5() faz) poderia ter sido um plano melhor para se começar.

Para uma solução mais portável, pode-se considerar a função genérica hash(). hash("crc32b", $str) retornará a mesma string que str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT).

Parâmetros

string

Os dados.

Valor Retornado

Retorna a soma de verificação crc32 da string como um inteiro.

Exemplos

Example #1 Mostrando uma soma de verificação crc32

Este exemplo mostra como exibir uma soma de verificação convertida com a função printf():

<?php
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
printf("%u\n", $checksum);
?>

Veja Também

  • hash() - Generate a hash value (message digest)
  • md5() - Calculata o hash md5 de uma string
  • sha1() - Calcula o hash SHA1 de uma string