crc32

funkcja

Oblicza 32-bitową sumę kontrolną CRC ciągu znaków. Do wykrywania błędów transmisji — nigdy do celów kryptograficznych ani weryfikacji integralności.

crc32(string $string): int

crc32 oblicza 32-bitową sumę kontrolną CRC (Cyclic Redundancy Check) podanego ciągu. Wynik jest liczbą całkowitą (może być ujemna na platformach 32-bitowych — na 64-bitowych zawsze nieujemna).

CRC32 to suma kontrolna do wykrywania przypadkowych błędów, NIE narzędzie kryptograficzne. Nie chroni przed celową modyfikacją danych, jest podatna na kolizje i odwracanie. Nie używaj do: haseł, tokenów, weryfikacji bezpieczeństwa, podpisów. Do kryptograficznej weryfikacji integralności użyj hash('sha256', ...) lub hash_hmac(). CRC32 stosuj do: sum kontrolnych w protokołach sieciowych (np. Ethernet, ZIP), szybkiego wykrywania błędów pamięci/transmisji, generowania kluczy partycjonowania w bazach danych.

<?php
declare(strict_types=1);

$wynik = crc32('php');
echo $wynik;     // 1452351953 (zawsze ten sam dla tego ciągu)
echo sprintf('%08X', $wynik & 0xFFFFFFFF); // hex: 569121D1

// Typowe użycie — szybka suma kontrolna do porównania:
$dane     = file_get_contents('plik.txt');
$checksum = crc32($dane);
// Zapisz $checksum, po ponownym odczycie porównaj — wykrywa przypadkowe błędy

// Uwaga na platformy 32-bit — wynik może być ujemny:
// Aby zawsze uzyskać nieujemną liczbę:
$bezpieczny = crc32('dane') & 0xFFFFFFFF;

// ❌ Nigdy tak:
// if (crc32($token) === $oczekiwany) { /* autoryzuj */ } // kolizje możliwe celowo!
// Do weryfikacji bezpieczeństwa: hash_hmac('sha256', ...)