>  기사  >  백엔드 개발  >  OpenSSL 및 C를 사용하여 SHA256 해시를 어떻게 생성할 수 있습니까?

OpenSSL 및 C를 사용하여 SHA256 해시를 어떻게 생성할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 00:58:02762검색

How can you generate SHA256 hashes using OpenSSL and C  ?

OpenSSL 및 C를 사용하여 SHA256 생성

이 기사에서는 OpenSSL 라이브러리 및 C를 사용하여 SHA256 해시를 생성하는 방법을 살펴보겠습니다. SHA256은 임의 데이터의 고유한 256비트 다이제스트를 생성하는 널리 사용되는 암호화 해시 함수입니다.

구현

시작하려면 OpenSSL 개발이 라이브러리와 헤더는 우리 시스템에서 사용할 수 있습니다. 필요한 헤더를 포함한 후 구현을 진행할 수 있습니다.

<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>

파일에서 SHA256 해시를 생성하려면 다음 함수를 사용합니다.

<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>

이러한 함수를 사용하려면 , 입력 문자열이나 파일 경로를 인수로 전달하기만 하면 됩니다. 생성된 SHA256 해시는 제공된 출력 버퍼에 반환됩니다.

위 내용은 OpenSSL 및 C를 사용하여 SHA256 해시를 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.