Signatur
Beschreibung
mhash_get_block_size() ermittelt die Blockgröße eines Hash-Algorithmus in Bytes. Der Algorithmus wird über eine ganzzahlige Konstante identifiziert, z. B. MHASH_MD5, MHASH_SHA256 oder MHASH_SHA512.
Die Blockgröße entspricht der Länge des erzeugten Hash-Wertes in Bytes. Diese Information ist beispielsweise nützlich, wenn Puffer oder Arrays passend dimensioniert werden sollen, oder wenn eine HMAC-Berechnung manuell umgesetzt wird, bei der die Hash-Ausgabelänge bekannt sein muss.
Die Funktion gehört zur mhash-Erweiterung, die in PHP 5.3.0 in die hash-Erweiterung integriert wurde. Für neuen Code wird empfohlen, stattdessen die Funktion hash_hmac() oder hash() aus der modernen hash-Erweiterung zu verwenden.
Falls ein ungültiger oder nicht unterstützter Hash-Algorithmus übergeben wird, gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hash Pflicht | int | Eine MHASH_*-Konstante, die den gewünschten Hash-Algorithmus identifiziert, z. B. MHASH_SHA256 oder MHASH_MD5. |
Rückgabewert
int zurück. Falls der angegebene Hash-Algorithmus unbekannt oder ungültig ist, wird false zurückgegeben.Beispiele
Blockgröße verschiedener Hash-Algorithmen ausgeben
<?php
// Blockgrößen gängiger Hash-Algorithmen ermitteln
$algorithmen = [
'MD5' => MHASH_MD5,
'SHA1' => MHASH_SHA1,
'SHA256' => MHASH_SHA256,
'SHA512' => MHASH_SHA512,
];
foreach ($algorithmen as $name => $konstante) {
$blockgroesse = mhash_get_block_size($konstante);
if ($blockgroesse !== false) {
echo $name . ': ' . $blockgroesse . ' Bytes' . PHP_EOL;
} else {
echo $name . ': unbekannter Algorithmus' . PHP_EOL;
}
}
Blockgröße zur Puffer-Dimensionierung nutzen
<?php
// Puffer passend zur SHA256-Blockgröße anlegen
$algo = MHASH_SHA256;
$blockgroesse = mhash_get_block_size($algo);
if ($blockgroesse === false) {
throw new RuntimeException('Unbekannter Hash-Algorithmus.');
}
// Hash berechnen und Länge prüfen
$hashWert = mhash($algo, 'Hallo Welt');
$laenge = strlen($hashWert);
echo 'Erwartete Blockgröße: ' . $blockgroesse . ' Bytes' . PHP_EOL;
echo 'Tatsächliche Hash-Länge: ' . $laenge . ' Bytes' . PHP_EOL;
echo 'Übereinstimmung: ' . ($laenge === $blockgroesse ? 'Ja' : 'Nein') . PHP_EOL;
// Wichtig · Fallstricke
Deprecation-Hinweis: Die mhash-Erweiterung gilt als veraltet. Ab PHP 5.3.0 ist sie als Wrapper um die hash-Erweiterung implementiert. Für neuen Code sollten ausschließlich die Funktionen der modernen hash-Erweiterung (hash(), hash_hmac(), hash_algos()) verwendet werden.
Die Funktion gibt die Ausgabelänge des Hash-Wertes in Bytes zurück – nicht die interne Blockgröße des Kompressionsvorgangs, wie sie z. B. für HMAC-Berechnungen nach RFC 2104 relevant wäre. Bei HMAC wird die interne Blockgröße (z. B. 64 Bytes bei SHA-256) benötigt, nicht die Ausgabelänge.