Openssl HMAC SHA1を試す
スポンサーリンク
このドキュメントの内容は、以下の通りです。
はじめに
C言語でOpenSSLライブラリを使用して、HMAC SHA-1を計算します。
openssl の HMAC 関数を試してみます。ハッシュ関数には、sha1を利用します。
MAC値はbase64エンコードして表示しています。
サンプルソースコード
このコードは、FreeBSD向けのコードです。
// Coded by kaworu #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); }
コンパイル
コンパイル方法。
gcc hmac_sha1.c -Wall -Wextra -lcrypto
実行例
実行例。
%./a.out vR6e4+MqTiWyuQN12YYrFerO5I4=
参考
下記、HMAC 関数は、便利な関数です。
unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, const unsigned char *d, int n, unsigned char *md, unsigned int *md_len);上記の関数を使わないと下記のようなコードを書きます。
HMAC_CTX ctx; HMAC_CTX_init (& ctx); HMAC_Init (& ctx, key, keylen, EVP_sha1 () ); HMAC_Update (& ctx, data, datalen); HMAC_Final (& ctx, res, & reslen);
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12