Maison  >  Article  >  développement back-end  >  Comment générer des hachages SHA256 avec OpenSSL et C ?

Comment générer des hachages SHA256 avec OpenSSL et C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 01:19:30585parcourir

How to Generate SHA256 Hashes with OpenSSL and C  ?

Génération de hachages SHA256 avec OpenSSL et C

Le hachage est une technique cryptographique utilisée pour générer une empreinte digitale unique, ou un résumé, de données. Dans le cas de SHA256 (Secure Hash Algorithm 2, 256 bits), ce résumé est une chaîne hexadécimale de 256 bits. SHA256 est couramment utilisé pour vérifier l'intégrité des données, vérifier les signatures numériques et stocker les mots de passe en toute sécurité.

Dans cet article, nous expliquerons comment générer des hachages SHA256 à l'aide de la bibliothèque OpenSSL et du code C.

Inclure les en-têtes OpenSSL

Pour commencer, assurez-vous que les en-têtes OpenSSL sont disponibles pour votre compilateur C. En règle générale, vous pouvez utiliser l'instruction include suivante :

<code class="cpp">#include <openssl/sha.h></code>

Créer le contexte SHA256

Ensuite, nous devons créer un contexte SHA256 pour initialiser le processus de hachage. Nous pouvons le faire avec le code suivant :

<code class="cpp">SHA256_CTX context;
SHA256_Init(&context);</code>

Mettre à jour le contexte SHA256 avec les données

Pour générer un hachage, nous devons alimenter les données à hacher dans le contexte SHA256. Nous pouvons le faire par morceaux en utilisant la fonction SHA256_Update() :

<code class="cpp">SHA256_Update(&context, data, data_length);</code>

Finaliser le hachage

Une fois que toutes les données ont été introduites dans le contexte SHA256, nous peut finaliser le hachage à l'aide de la fonction SHA256_Final() :

<code class="cpp">unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_Final(hash, &context);</code>

Le hachage résultant est maintenant stocké dans le tableau de hachage.

Convertir en chaîne hexadécimale

Enfin, nous devons convertir le hachage binaire en une chaîne hexadécimale lisible par l'homme :

<code class="cpp">char hex_hash[65];
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
    sprintf(hex_hash + (i * 2), "%02x", hash[i]);
}
hex_hash[64] = 0;</code>

Exemple d'utilisation

Maintenant que nous avons nos fonctions en place, nous pouvons les utiliser pour générer des hachages SHA256 selon nos besoins. Par exemple :

<code class="cpp">// Generate a hash for a string
char hash_string[65];
SHA256_string("Hello, world!", hash_string);

// Generate a hash for a file
char hash_file[65];
SHA256_file("path/to/file", hash_file);</code>

Cela générera un hachage SHA256 pour la chaîne ou le fichier donné et le stockera dans le tampon correspondant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn