>  기사  >  백엔드 개발  >  OpenSSL 및 C를 사용하여 SHA256 해시를 생성하는 방법은 무엇입니까?

OpenSSL 및 C를 사용하여 SHA256 해시를 생성하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-27 01:19:30585검색

How to Generate SHA256 Hashes with OpenSSL and C  ?

OpenSSL 및 C를 사용하여 SHA256 해시 생성

해싱은 데이터의 고유한 지문 또는 다이제스트를 생성하는 데 사용되는 암호화 기술입니다. SHA256(Secure Hash Algorithm 2, 256비트)의 경우 이 다이제스트는 256비트 16진수 문자열입니다. SHA256은 일반적으로 데이터 무결성 확인, 디지털 서명 확인, 비밀번호 안전하게 저장하는 데 사용됩니다.

이 기사에서는 OpenSSL 라이브러리와 C 코드를 사용하여 SHA256 해시를 생성하는 방법을 살펴보겠습니다.

OpenSSL 헤더 포함

시작하려면 C 컴파일러에서 사용할 수 있는 OpenSSL 헤더가 있는지 확인하세요. 일반적으로 다음 include 문을 사용할 수 있습니다.

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

SHA256 컨텍스트 생성

다음으로 SHA256 컨텍스트를 생성하여 해싱 프로세스를 초기화해야 합니다. 다음 코드를 사용하여 이 작업을 수행할 수 있습니다.

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

데이터로 SHA256 컨텍스트 업데이트

해시를 생성하려면 해시할 데이터를 공급해야 합니다. SHA256 컨텍스트로. SHA256_Update() 함수를 사용하여 이 작업을 청크로 수행할 수 있습니다.

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

해시 마무리

모든 데이터가 SHA256 컨텍스트에 공급되면 SHA256_Final() 함수를 사용하여 해시를 마무리할 수 있습니다.

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

결과 해시는 이제 해시 배열에 저장됩니다.

16진수 문자열로 변환

마지막으로 바이너리 해시를 사람이 읽을 수 있는 16진수 문자열로 변환해야 합니다.

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

사용 예

이제 함수가 생겼습니다. 그 자리에서 이를 사용하여 필요에 따라 SHA256 해시를 생성할 수 있습니다. 예:

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

주어진 문자열이나 파일에 대해 SHA256 해시를 생성하여 해당 버퍼에 저장합니다.

위 내용은 OpenSSL 및 C를 사용하여 SHA256 해시를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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