Signatur
Beschreibung
mhash() berechnet einen kryptografischen Hash-Wert (oder HMAC, wenn ein Schlüssel angegeben wird) für einen beliebigen Datenpuffer. Die Funktion entstammt der mhash-Bibliothek und unterstützt zahlreiche Algorithmen wie MD5, SHA-1, SHA-256, CRC32 und weitere, die über vordefinierte Konstanten (MHASH_*) angesprochen werden.
Wenn ein $key angegeben wird, wird statt eines einfachen Hashes ein HMAC (Hash-based Message Authentication Code) berechnet. Dieses Verfahren eignet sich zur Prüfung der Datenintegrität und Authentizität, etwa bei API-Signaturen oder Nachrichtenauthentifizierung.
Der Rückgabewert ist eine binäre Zeichenkette. Für eine lesbare hexadezimale Darstellung empfiehlt sich die Umwandlung mit bin2hex().
Wichtiger Hinweis: Die Funktion mhash() gilt als veraltet. Für neue Projekte sollten stattdessen hash(), hash_hmac() oder die hash_*-Funktionsfamilie verwendet werden, die deutlich mehr Algorithmen und flexiblere Optionen bieten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $algo Pflicht | int | Die Algorithmus-Konstante, z. B. MHASH_SHA256, MHASH_MD5 oder MHASH_SHA1. Eine vollständige Liste liefert mhash_count() in Verbindung mit mhash_get_hash_name(). |
|
| $data Pflicht | string | Die zu hashenden Daten als Zeichenkette. Es kann sich um beliebige Binär- oder Textdaten handeln. | |
| $key | string | Optionaler geheimer Schlüssel für die HMAC-Berechnung. Wird er angegeben, liefert mhash() einen HMAC statt eines einfachen Hashes. |
Rückgabewert
false zurückgegeben.Beispiele
Einfachen SHA-256-Hash berechnen
<?php
$data = 'Hallo Welt';
$hash = mhash(MHASH_SHA256, $data);
echo bin2hex($hash) . PHP_EOL;
HMAC mit geheimem Schlüssel berechnen
<?php
$data = 'Wichtige Nachricht';
$secret = 'meinGeheimerSchluessel';
$hmac = mhash(MHASH_SHA256, $data, $secret);
echo bin2hex($hmac) . PHP_EOL;
// Moderner Äquivalent:
$hmacModern = hash_hmac('sha256', $data, $secret);
echo $hmacModern . PHP_EOL;
Verfügbare Algorithmen auflisten
<?php
$count = mhash_count();
for ($i = 0; $i <= $count; $i++) {
$name = mhash_get_hash_name($i);
if ($name !== false) {
echo $i . ': ' . $name . PHP_EOL;
}
}
// Wichtig · Fallstricke
Veraltet / Deprecation: Die mhash-Erweiterung ist seit PHP 5.3.0 in die hash-Erweiterung integriert und sollte in neuen Projekten nicht mehr direkt verwendet werden. Nutze stattdessen hash() für einfache Hashes und hash_hmac() für HMAC-Berechnungen.
Sicherheit: Algorithmen wie MHASH_MD5 und MHASH_SHA1 gelten für sicherheitskritische Anwendungen als unsicher. Für Passwörter sollte niemals mhash() verwendet werden — stattdessen password_hash() und password_verify() nutzen.
Binärausgabe: Der Rückgabewert ist rohe Binärdaten. Für die Weitergabe in Textkontexten (z. B. HTTP-Header, Datenbank) immer bin2hex() oder base64_encode() verwenden.