본문 바로가기

Tech

[기초] OpenSSL 해쉬 함수 사용 예제

SHA256 해쉬의 사용 예제는 다음과 같다.

 

 

#include <openssl/sha.h>


unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md)
{
    SHA256_CTX c;
    static unsigned char m[SHA256_DIGEST_LENGTH];

    if (md == NULL)
        md = m;
    SHA256_Init(&c);
    SHA256_Update(&c, d, n);
    SHA256_Final(md, &c);
    OPENSSL_cleanse(&c, sizeof(c));
    return md;
}

 

 

출처 : https://github.com/openssl/openssl/blob/master/crypto/sha/sha256.c

 

 

해쉬를 할때 위처럼 데이터를 한꺼번에 해쉬하는 방법도 있지만 나눠서 해쉬하는 방법도 있다.

다음 코드처럼 하면 된다.

 

    SHA256_CTX c;
    unsigned char m[SHA256_DIGEST_LENGTH];

    SHA256_Init(&c);
    SHA256_Update(&c, "1234", 4);
    SHA256_Update(&c, "12345", 5);
    SHA256_Update(&c, "1234567", 7);
    SHA256_Final(md, &c);

 

 

SHA256_Update를 여러번 하는 것이다.

 

이런 코드는 언제 쓰는가? 대용량 파일을 해쉬할 때 유용하다.

대용량 파일을 읽어들이면서 그때 그때마다 해쉬 update를 해주고 마지막에 finalize를 하면 효율적이다.

 

해쉬함수는 SHA 말고 여럿이 있는데 앞에 SHA256_접두어만 해당 해쉬로 바꿔서 사용하면 된다.

정확한 명칭은 OpenSSL 의 폴더를 뒤적여 보면 알 수 있다.

 

'Tech' 카테고리의 다른 글

EPD 와 OTC 방법론  (0) 2018.07.31
코드 정리 #8  (0) 2018.07.29
코드 정리 #7  (0) 2018.07.29
코드 정리 #6  (0) 2018.07.28
코드 정리 #5  (0) 2018.07.28