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 |