C言語で記述された暗号関連のプログラムのサンプルを紹介します. Linux上で動作確認していますが,Windows上でもそのまま,あるいはわずかな変更のみで動作するものと思います.
暗号ライブラリとして,OpenSSL を用いています. OpenSSL の高レベルの暗号化インタフェースである主な EVP 関数の仕様を OpenSSL EVP 関数,および OpenSSL EVP_PKEY 関数に示します.
DH (Diffie-Hellman) 法を用いた鍵交換を行う機能をテストするプログラムです. ソースプログラムは, keyagree.c です.
プログラムはコマンドとして起動します.
keyagree [keyLen] パラメータ: keyLen: 鍵のビット長(省略時:64)
A パート,B パートで共有鍵の生成処理を以下の手順で行います.
コンパイル時の注意点は,以下です.
DH (Diffie-Hellman) 法を用いた鍵交換を行う機能をテストするプログラムです(楕円曲線暗号版). ソースプログラムは, ecdh.c です. (OpenSSL の EVP_PKEY 関数を用いた ECDH のサンプルプログラムは ECDH (EVP_PKEY) にあります).
プログラムはコマンドとして起動します.
ecdh [nid] パラメータ: nid: 楕円曲線 ID(省略時:710 (secp160r2))
楕円曲線 ID の値と曲線名称の定義は,openssl/obj_mac.h に記述されています.
A パート,B パートで共有鍵の生成処理を以下の手順で行います.
コンパイル時の注意点は,以下です.