「HMAC」の版間の差分
提供: セキュリティ
(ページの作成:「<!-- vim: filetype=mediawiki --> HMAC ( Hash-base Message Authentication Code, Keyed-Hashing for Message Authentication) とは、認証と改ざん検出を行え...」) |
(相違点なし)
|
2013年7月27日 (土) 23:16時点における版
HMAC ( Hash-base Message Authentication Code, Keyed-Hashing for Message Authentication) とは、認証と改ざん検出を行える メッセージ認証符号 (メッセージ認証コード, MAC) の1つです。秘密鍵とメッセージ(データ)を元にハッシュ関数で計算されます。
読み方
- HMAC
- えいち まっく
- Hash-base Message Authentication Code
- はっしゅべーす めっせーじ あーせんてぃけーしょん こーど
概要
ハッシュアルゴリズム は、 MD5 や SHA-1 などの ハッシュ関数 が用いられます。それぞれ HMAC-MD5, HMAC-SHA1 と呼ばれます。
使い方
サンプルコード
C言語
hmac_sha1.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/hmac.h> #include <err.h> // warn #include <netinet/in.h> // b64_ntop #include <resolv.h> // b64_ntop int k64_encode (const char *data, size_t datalen, char * const buf, size_t len) { int rv; rv = b64_ntop (data, datalen, buf, (len / sizeof (buf[0]) ) ); if (rv == -1) { warn ("b64_ntop: error encode base64"); return (rv); } return (rv); } int main (int argc, char *argv[]) { size_t reslen; char res[SHA_DIGEST_LENGTH + 1]; char key[] = "93f75ae483d03c23358fa5330ff4a3f5"; size_t keylen = strlen (key); char data[255] = "foo bar"; size_t datalen = strlen (data); if (HMAC (EVP_sha1 (), key, keylen, data, datalen, res, & reslen) ) { char buf[256]; size_t bufsize = sizeof (buf); if (k64_encode (res, reslen, buf, bufsize) == -1) { exit (EXIT_FAILURE); } printf ("%s\n", buf); } exit (EXIT_SUCCESS); }
コンパイル
FreeBSD の場合、コンパイルは、以下のとおりです。
gcc hmac_sha1.c -Wall -Wextra -lcrypto
実行例
%./a.out vR6e4+MqTiWyuQN12YYrFerO5I4=