Start · Sprachen · PHP · Referenz · mhash

mhash

Funktion

Berechnet einen Hash-Wert oder HMAC über die übergebenen Daten mit dem angegebenen Algorithmus.

seit PHP 4.0.0 Kategorie: crypto

Signatur

mhash(int $algo, string $data, string $key = ''): string|false

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

Typ
string|false
Beschreibung
Gibt den berechneten Hash als binäre Zeichenkette zurück. Bei einem ungültigen Algorithmus oder einem Fehler wird false zurückgegeben.

Beispiele

Einfachen SHA-256-Hash berechnen

<?php
$data = 'Hallo Welt';
$hash = mhash(MHASH_SHA256, $data);
echo bin2hex($hash) . PHP_EOL;
a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

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.