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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 00:58:02762parcourir

How can you generate SHA256 hashes using OpenSSL and C  ?

Générer SHA256 avec OpenSSL et C

Dans cet article, nous explorerons comment générer des hachages SHA256 à l'aide de la bibliothèque OpenSSL et de C . SHA256 est une fonction de hachage cryptographique largement utilisée qui produit un résumé unique de 256 bits de données arbitraires.

Mise en œuvre

Pour commencer, nous devons nous assurer que le développement d'OpenSSL les bibliothèques et les en-têtes sont disponibles sur notre système. Après avoir inclus les en-têtes nécessaires, nous pouvons procéder à l'implémentation :

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

// Function to generate SHA256 hash of a string
void sha256_string(char *string, char outputBuffer[65]) {
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, string, strlen(string));
    SHA256_Final(hash, &sha256);
    int i = 0;
    for (i = 0; i < SHA256_DIGEST_LENGTH; i++) {
        sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
    }
    outputBuffer[64] = 0;
}</code>

Pour générer un hachage SHA256 à partir d'un fichier, nous utilisons la fonction suivante :

<code class="cpp">int sha256_file(char *path, char outputBuffer[65]) {
    FILE *file = fopen(path, "rb");
    if (!file) return -534;

    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    const int bufSize = 32768;
    unsigned char *buffer = malloc(bufSize);
    int bytesRead = 0;
    if (!buffer) return ENOMEM;
    while ((bytesRead = fread(buffer, 1, bufSize, file))) {
        SHA256_Update(&sha256, buffer, bytesRead);
    }
    SHA256_Final(hash, &sha256);

    sha256_hash_string(hash, outputBuffer);
    fclose(file);
    free(buffer);
    return 0;
}</code>

Pour utiliser ces fonctions , transmettez simplement la chaîne d'entrée ou le chemin du fichier comme argument. Le hachage SHA256 généré sera renvoyé dans le tampon de sortie fourni.

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