Position actuelle: Accueil> Derniers articles> PHP Hash_final est utilisé pour la génération de données de demande de réseau signature

PHP Hash_final est utilisé pour la génération de données de demande de réseau signature

gitbox 2025-05-19

La fonction HASH_FINAL est une fonction de PHP qui génère des valeurs de hachage. Il est généralement utilisé avec hash_init et hash_update pour créer un contexte de hachage et mettre à jour les données étape par étape. HASH_FINAL est utilisé pour terminer l'opération de hachage et renvoyer la valeur de hachage finale.

 string hash_final ( resource $context [, bool $raw_output = false ] )
  • $ Context : est un contexte de hachage initialisé par la fonction hash_init .

  • $ raw_output : si défini sur true , renvoyez la valeur de hachage au format binaire; Si défini sur False , renvoyez la valeur de hachage au format hexadécimal.

Exigences pour générer des signatures dans les demandes de réseau

Dans de nombreuses API, les demandes de réseau doivent être accompagnées de paramètres de signature et les signatures sont généralement le résultat du hachage cryptographique des paramètres et des clés de la demande. Le but est d'empêcher les demandes d'être falsifiées. En générant des signatures en utilisant les fonctions de hachage, la cohérence et la sécurité du contenu demandé pendant la transmission peuvent être assurées.

Générer des signatures en utilisant hash_final

Supposons que nous devons générer une signature via PHP et utiliser la fonction HASH_FINAL pour terminer ce processus. Les étapes spécifiques sont les suivantes:

  1. Initialiser le contexte du hachage:

Tout d'abord, utilisez Hash_Init pour initialiser le contexte de hachage et sélectionner l'algorithme de hachage approprié (comme Sha256 ).

 $context = hash_init('sha256');
  1. Mettez à jour le contexte du hachage:

Ensuite, nous ajoutons progressivement les paramètres de demande et la clé au contexte de hachage. Ici, nous prenons les paramètres demandés à titre d'exemple:

 $params = [
    'method' => 'POST',
    'url' => 'https://gitbox.net/api/v1/order',
    'timestamp' => time(),
    'api_key' => 'your_api_key'
];

foreach ($params as $key => $value) {
    hash_update($context, $key . '=' . $value);
}
  1. Générer la signature finale:

La valeur de hachage finale est générée sous forme de signature via la fonction hash_final . Ici, nous choisissons d'utiliser le format hexadécimal:

 $signature = hash_final($context, false);

Exemple de code complet

Voici un exemple complet de code qui montre comment générer une signature et l'ajoutant à une demande d'API.

 <?php

// Initialiser le contexte du hachage
$context = hash_init('sha256');

// Demander des paramètres
$params = [
    'method' => 'POST',
    'url' => 'https://gitbox.net/api/v1/order',
    'timestamp' => time(),
    'api_key' => 'your_api_key'
];

// 将Demander des paramètres添加到哈希上下文
foreach ($params as $key => $value) {
    hash_update($context, $key . '=' . $value);
}

// Générer une signature
$signature = hash_final($context, false);

// Résultats de la signature d&#39;impression
echo 'Generated Signature: ' . $signature;

// Utilisation supplémentaire des signatures générées pour créer des demandes de réseau
// Exemple de demande
$request_data = [
    'method' => 'POST',
    'url' => 'https://gitbox.net/api/v1/order',
    'timestamp' => time(),
    'api_key' => 'your_api_key',
    'signature' => $signature
];

// Code pour exécuter la demande
// Utilisé icicURLEnvoyez une demande si vous le souhaitez,Données de demande de passage

?>

Comment utiliser les signatures pour faire des demandes de réseau?

Dans les applications pratiques, une fois la signature générée, elle est généralement envoyée au serveur API dans le cadre de la demande. Voici un exemple simple montrant comment joindre une signature générée à une demande de poste.

 $ch = curl_init();

// ConfigurationcURLdemander
curl_setopt($ch, CURLOPT_URL, 'https://gitbox.net/api/v1/order');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($request_data));

// mettre en œuvrecURLdemander
$response = curl_exec($ch);

// fermeturecURLSession
curl_close($ch);

// Réponse de sortie
echo $response;

De cette façon, nous pouvons nous assurer que les données de la demande n'ont pas été falsifiées pendant la transmission, et le serveur API peut utiliser le même algorithme de signature pour vérifier la légitimité de la demande.