Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie die Funktion PHP Hash (), um HMAC (Hash-basierte Nachrichten-Authentifizierungscode) zu generieren, um zu generieren.

Verwenden Sie die Funktion PHP Hash (), um HMAC (Hash-basierte Nachrichten-Authentifizierungscode) zu generieren, um zu generieren.

gitbox 2025-07-01

Bei der Überprüfung der Netzwerksicherheit und der Datenintegrität ist HMAC (Hash-basierte Nachrichtenauthentifizierungscode) eine häufig verwendete und effektive Technologie. Es kombiniert Hash -Funktionen und -tasten, um die Integrität und Identitätsauthentifizierung von Nachrichten zu überprüfen. Die integrierte Hash_HMAC () -Funktion von PHP bietet uns bequeme Tools, um HMAC zu generieren. In diesem Artikel wird jedoch vorgestellt, wie HMAC mithilfe der grundlegenderen Hash () -Funktion manuell implementiert wird.

Was ist HMAC?

Die Kernidee von HMAC besteht darin, den Schlüssel vor und nach der Nachricht zu spleißen und dann die Saite nach dem Spleiß zu hash. Im Vergleich zu einfachen Hash -Werten kann HMAC effektiv verhindern, dass Nachrichten manipuliert und nicht leicht geschmiedet werden.

HMAC -Berechnungsformel:

 HMAC(key, message) = hash((key ⊕ opad) || hash((key ⊕ ipad) || message))

In:

  • || bedeutet den Verbindungsbetrieb

  • zeigt bitweise xor an

  • OPAD ist eine externe Füllung, 0x5c Repeat Fill

  • iPad ist interne Füllung, 0x36 wiederholte Füllung

Implementierung der HMAC mit Hash () -Funktion in PHP

Das Folgende zeigt, wie HMAC mithilfe der Funktion PHP Hash () manuell implementiert werden kann:

 <?php
function hmac_hash($algo, $key, $data) {
    $blocksize = 64; // am meistenhashDie Funktionsblockgröße ist64Byte
    if (strlen($key) > $blocksize) {
        $key = hash($algo, $key, true); // Wenn der Schlüssel zu lang ist,ErstehashUm einen Binärzeichen mit fester Länge zu bilden
    }
    $key = str_pad($key, $blocksize, chr(0x00)); // Füllen Sie den Schlüssel zur Blockierung der Größe aus

    $ipad = str_repeat(chr(0x36), $blocksize);
    $opad = str_repeat(chr(0x5c), $blocksize);

    $inner = $key ^ $ipad;
    $outer = $key ^ $opad;

    $inner_hash = hash($algo, $inner . $data, true); // Innerer Hash,Ausgabe -Binärformat
    $hmac = hash($algo, $outer . $inner_hash);

    return $hmac;
}

// prüfen
$key = "secretkey";
$message = "The quick brown fox jumps over the lazy dog";

echo "HMAC-SHA256: " . hmac_hash('sha256', $key, $message);
?>

Der obige Code verwendet den SHA-256-Algorithmus, um HMAC-Berechnungen für die Nachricht und den Schlüssel durchzuführen, und gibt eine hexadezimale Zeichenfolge zurück.

Anmerkungen in praktischen Anwendungen

  • Es wird empfohlen, die mit PHP ausgestattete Hash_HMAC () -Funktion zu verwenden, die effizienter und sicherer ist.

  • Es wird im Allgemeinen empfohlen, die Hash -Blockgröße mit der Hash -Blockgröße zu entsprechen.

  • Die Verwendung von Binärausgaben (der dritte Parameter ist auf TRUE eingestellt) ist für Spleißvorgänge förderlich.

  • HMAC wird hauptsächlich für die Nachrichtenauthentifizierung verwendet, und Schlüssel müssen sicher verwaltet werden.

Zusammenfassen

Obwohl PHP bereits über eine bequeme Funktion von Hash_HMAC () verfügt, wird das Verständnis und die Beherrschung der Prinzipien der Verwendung der Basis -Hash () -Funktion zur Implementierung von HMAC dazu beitragen, den sicheren Hash -Mechanismus besser zu verstehen und somit die sicheren Programmierfunktionen zu verbessern.

Wenn Sie mehr wissen möchten, können Sie https://gitbox.net Ressourcen besuchen.