「HMAC」の版間の差分
提供: セキュリティ
(ページの作成:「<!-- vim: filetype=mediawiki --> HMAC ( Hash-base Message Authentication Code, Keyed-Hashing for Message Authentication) とは、認証と改ざん検出を行え...」) |
|||
行1: | 行1: | ||
− | |||
− | |||
− | |||
[[HMAC]] ( Hash-base Message Authentication Code, Keyed-Hashing for Message Authentication) とは、認証と改ざん検出を行える [[メッセージ認証符号]] (メッセージ認証コード, MAC) の1つです。[[秘密鍵]]とメッセージ(データ)を元に[[ハッシュ関数]]で計算されます。 | [[HMAC]] ( Hash-base Message Authentication Code, Keyed-Hashing for Message Authentication) とは、認証と改ざん検出を行える [[メッセージ認証符号]] (メッセージ認証コード, MAC) の1つです。[[秘密鍵]]とメッセージ(データ)を元に[[ハッシュ関数]]で計算されます。 | ||
行11: | 行8: | ||
== 概要 == | == 概要 == | ||
− | + | ハッシュアルゴリズム は、 [[MD5]] や [[SHA-1]] などの [[ハッシュ関数]] が用いられます。それぞれ HMAC-MD5, HMAC-SHA1 と呼ばれます。 | |
− | + | ||
− | + | ||
− | + | ||
== 使い方 == | == 使い方 == | ||
− | |||
== サンプルコード == | == サンプルコード == | ||
− | |||
=== C言語 === | === C言語 === | ||
− | |||
==== hmac_sha1.c ==== | ==== hmac_sha1.c ==== | ||
− | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
#include <stdio.h> | #include <stdio.h> | ||
行75: | 行65: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
==== コンパイル ==== | ==== コンパイル ==== | ||
[[FreeBSD]] の場合、コンパイルは、以下のとおりです。 | [[FreeBSD]] の場合、コンパイルは、以下のとおりです。 | ||
行81: | 行70: | ||
gcc hmac_sha1.c -Wall -Wextra -lcrypto | gcc hmac_sha1.c -Wall -Wextra -lcrypto | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
==== 実行例 ==== | ==== 実行例 ==== | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
行87: | 行75: | ||
vR6e4+MqTiWyuQN12YYrFerO5I4= | vR6e4+MqTiWyuQN12YYrFerO5I4= | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | |||
* [[ハッシュ]] | * [[ハッシュ]] | ||
+ | <!-- | ||
+ | vim: filetype=mediawiki | ||
+ | --> |
2015年9月22日 (火) 00:53時点における最新版
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=