Signatur
Beschreibung
crc32() berechnet den polynomischen CRC32-Prüfwert des übergebenen Strings. Das Ergebnis ist eine vorzeichenbehaftete 32-Bit-Ganzzahl (int), die auf 32-Bit-Plattformen negativ sein kann, auf 64-Bit-Plattformen jedoch immer positiv ist, da PHP dort 64-Bit-Integer verwendet.
Die Funktion eignet sich gut für schnelle Integritätsprüfungen von Daten, etwa zum Vergleichen zweier Strings ohne den vollständigen Inhalt übertragen zu müssen, oder zur einfachen Hash-basierten Partitionierung. CRC32 ist kein kryptografischer Hash und daher nicht für Sicherheitszwecke wie Passwort-Hashing geeignet.
Um einen plattformunabhängigen, stets positiven Wert zu erhalten, kann man den Rückgabewert mit sprintf('%u', crc32($str)) als vorzeichenlosen Integer formatieren oder hash('crc32b', $str) für eine hexadezimale Darstellung verwenden.
- Schnell und ressourcenschonend für große Mengen kurzer Strings.
- Kollisionen sind möglich – für sicherheitskritische Prüfsummen
hash()mit SHA-256 oder ähnlichem verwenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Eingabe-String, für den der CRC32-Prüfwert berechnet werden soll. |
Rückgabewert
Beispiele
Einfache CRC32-Prüfsumme berechnen
<?php
$str = 'Hallo Welt';
$checksum = crc32($str);
echo $checksum . PHP_EOL;
// Plattformunabhängige vorzeichenlose Darstellung
echo sprintf('%u', $checksum) . PHP_EOL;
?>
Dateiintegrität prüfen (einfache Änderungserkennung)
<?php
$original = 'Dies ist der Inhalt meiner Datei.';
$empfangen = 'Dies ist der Inhalt meiner Datei.';
if (crc32($original) === crc32($empfangen)) {
echo 'Inhalt ist identisch.' . PHP_EOL;
} else {
echo 'Inhalt wurde verändert!' . PHP_EOL;
}
// Vergleich mit verändertem String
$veraendert = 'Dies ist der Inhalt meiner Datei!';
if (crc32($original) === crc32($veraendert)) {
echo 'Identisch.' . PHP_EOL;
} else {
echo 'Unterschied erkannt.' . PHP_EOL;
}
?>
Hexadezimale CRC32-Darstellung mit hash()
<?php
$str = 'Hallo Welt';
// Vorzeichenloser Dezimalwert
echo sprintf('%u', crc32($str)) . PHP_EOL;
// Hexadezimale Darstellung (konsistent mit Tools wie zlib)
echo hash('crc32b', $str) . PHP_EOL;
?>
// Wichtig · Fallstricke
Sicherheitshinweis: CRC32 ist kein kryptografischer Hash. Er ist anfällig für Kollisionen und darf nicht für Passwort-Hashing, digitale Signaturen oder sicherheitsrelevante Integritätsprüfungen verwendet werden. Für solche Zwecke sind hash('sha256', ...) oder password_hash() zu bevorzugen.
Plattformunterschiede: Auf 32-Bit-Systemen kann der Rückgabewert negativ sein. Für portable, vorzeichenlose Werte immer sprintf('%u', crc32($str)) oder hash('crc32b', $str) verwenden.
Hinweis zu hash('crc32b', ...): Die Ergebnisse von crc32() und hash('crc32b', ...) repräsentieren denselben Wert, jedoch in unterschiedlicher Darstellung (Integer vs. Hex-String).