개발자료/Openssl

HMAC-SHA256

배경남 2018. 1. 24. 11:10

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