본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

C언어 HMAC SHA256 샘플코드(openssl dgst popen)

by 주용사 2023. 1. 9.
728x90

수많은 HMAC SHA256 예제가 있었지만 C언어로 짜여진 소스를 찾긴 어려웠다.

openssl을 사용한 소스

hmac sha256 using c language ..example

/*******************************************************************/
/* HMAC_SHA256 FUNCTION                                            */
/* phskey : 해쉬키, pmessage : 암호화할 데이터, psecret : 암호화키 */
/*******************************************************************/
int HMAC_SHA256(char* phskey, char* pmessage, char* secret)
{
    FILE *fp;

    char zinbuf[1024];
    char zoutbuf[1024];

    memset(zinbuf, 0x00, sizeof(zinbuf));
    memset(zoutbuf, 0x00, sizeof(zoutbuf));

    sprintf(zinbuf, "echo -n '%s' | openssl dgst -sha256 -hmac '%s' -binary | base64", pmessage, secret);

    fp = popen(zinbuf, "r");

    if(fgets(zoutbuf, 1024, fp) != NULL)
        memcpy(phskey, zoutbuf, strlen(zoutbuf)-1); // 끝에 개행 없애기 위해서

    pclose(fp);

    return 0;
}

참고한 사이트

https://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/#java

728x90