본문 바로가기

개발자료/Openssl

HMAC-SHA256

HMAC-SHA256


#include <string.h>

#include <glib.h>

#include <openssl/err.h> //for ERR_error_string()

#include <openssl/sha.h> //for SHA256_DIGEST_LENGTH

#include <openssl/hmac.h>


void main()

{

        gint i;

        guint md_len;

        guint8 md[SHA256_DIGEST_LENGTH];

        guint8 src[] = "abc";

        guint8 key[] = "key";

        guint8 expected[32] = {

                0x9C, 0x19, 0x6E, 0x32, 0xDC, 0x01, 0x75, 0xF8,

                0x6F, 0x4B, 0x1C, 0xB8, 0x92, 0x89, 0xD6, 0x61,

                0x9D, 0xE6, 0xBE, 0xE6, 0x99, 0xE4, 0xC3, 0x78,

                0xE6, 0x83, 0x09, 0xED, 0x97, 0xA1, 0xA6, 0xAB

        };


        /* https://www.openssl.org/docs/man1.0.2/crypto/hmac.html */

        if (HMAC (EVP_sha256 (), key, strlen (key),

                  src, strlen (src), md, &md_len) == NULL) {

                g_error ("fail HMAC: %s",

                         ERR_error_string (ERR_peek_last_error (), NULL));

        }


        g_print ("HMAC-SHA256(key, src): ");

        for (i = 0; i < SHA256_DIGEST_LENGTH; i++) {

                g_print ("%.2X ", md[i]);

        }

        g_print ("\n");


        g_assert_cmpmem (md, md_len, expected, sizeof(expected));

}


HMAC-SHA256 테스트 사이트

http://dinochiesa.github.io/hmachash.html

'개발자료 > Openssl' 카테고리의 다른 글

RSAES-OAEP encrypt / decrypt  (0) 2018.01.24
RSASSA PKCS1 v1.5  (0) 2018.01.24
SHA256  (0) 2018.01.24
AES-CTR  (0) 2018.01.24