Position actuelle: Accueil> Derniers articles> Utilisez la fonction PHP Hash () pour générer HMAC (code d'authentification de message basé sur le hachage)

Utilisez la fonction PHP Hash () pour générer HMAC (code d'authentification de message basé sur le hachage)

gitbox 2025-07-01

Dans la sécurité de la sécurité du réseau et l'intégrité des données, HMAC (code d'authentification des messages basé sur le hachage) est une technologie couramment utilisée et efficace. Il combine les fonctions de hachage et les clés pour vérifier l'intégrité et l'authentification d'identité des messages. La fonction HASH_HMAC () intégrée de PHP nous fournit des outils pratiques pour générer HMAC, mais cet article présentera comment implémenter manuellement HMAC en utilisant la fonction Hash () plus basique.

Qu'est-ce que HMAC?

L'idée principale de HMAC est d'épisser la clé avant et après le message, puis de hacher la chaîne après l'épissage. Par rapport aux valeurs de hachage simples, HMAC peut empêcher efficacement les messages d'être falsifiés et pas facilement forgés.

Formule de calcul HMAC:

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

dans:

  • || Signifie le fonctionnement de la connexion

  • indique XOR dans le sens bit

  • OPAD est un remplissage externe, 0x5c Repreing Fill

  • L'ipad est un remplissage interne, 0x36 Représent le remplissage

Implémentation de HMAC avec la fonction hash () dans PHP

Ce qui suit montre comment implémenter manuellement HMAC à l'aide de la fonction PHP Hash () :

 <?php
function hmac_hash($algo, $key, $data) {
    $blocksize = 64; // la pluparthashLa taille du bloc fonction est64octet
    if (strlen($key) > $blocksize) {
        $key = hash($algo, $key, true); // Si la clé est trop longue,D&#39;abordhashPour former une chaîne binaire de longueur fixe
    }
    $key = str_pad($key, $blocksize, chr(0x00)); // Remplissez la clé pour bloquer la taille

    $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); // Hachage intérieur,Format binaire de sortie
    $hmac = hash($algo, $outer . $inner_hash);

    return $hmac;
}

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

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

Le code ci-dessus utilise l'algorithme SHA-256 pour effectuer des calculs HMAC sur le message et la clé, et renvoie une chaîne hexadécimale.

Notes dans les applications pratiques

  • Il est recommandé d'utiliser la fonction hash_hmac () qui est livrée avec PHP, ce qui est plus efficace et sûr.

  • La longueur de clé est généralement recommandée comme étant la même que la taille du bloc de hachage.

  • L'utilisation de la sortie binaire (le troisième paramètre est défini sur true ) est propice aux opérations d'épissage.

  • HMAC est principalement utilisé pour l'authentification des messages et les clés doivent être gérées en toute sécurité.

Résumer

Bien que PHP ait déjà une fonction Hash_HMAC () pratique, la compréhension et la maîtrise des principes de l'utilisation de la fonction Hash () de base pour implémenter HMAC aidera à mieux comprendre le mécanisme de hachage sécurisé et ainsi améliorer les capacités de programmation sécurisées.

Si vous voulez en savoir plus, vous pouvez visiter les ressources connexes https://gitbox.net .