OpenSSL 및 C를 사용하여 SHA256 해시 생성
OpenSSL 및 C와 함께 SHA256을 사용하여 해시를 생성하는 작업을 수행할 때는 라이브러리의 기능을 이해하는 것이 중요합니다. . 그러한 인스턴스 중 하나에서는 필요한 헤더 파일과 빌드 경로를 포함했음에도 불구하고 OpenSSL 기능이 누락되는 문제가 발생했습니다. 다음 코드 조각은 솔루션을 보여줍니다.
<code class="cpp">void sha256_hash_string(unsigned char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65]) { int i = 0; for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { sprintf(outputBuffer + (i * 2), "%02x", hash[i]); } outputBuffer[64] = 0; } 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; } 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>
이 코드를 활용하려면 다음 단계를 따르세요.
<code class="cpp">static unsigned char buffer[65]; sha256("string", buffer); printf("%s\n", buffer);</code>
이 접근 방식은 OpenSSL 및 C를 사용하여 SHA256 해시를 효과적으로 생성하고 포함 경로를 확인합니다. 이전에 발생한 문제입니다.
위 내용은 OpenSSL 및 C를 사용하여 SHA256 해시를 생성하는 방법: 누락된 기능에 대한 솔루션?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!