暗号プログラム (C言語版)

C 言語で記述された暗号関連のプログラムのサンプルを紹介します. Linux 上で動作確認していますが,Windows 上でもそのまま,あるいはわずかな変更のみで動作するものと思います.

暗号ライブラリとして,OpenSSL を用いています. OpenSSL の高レベルの公開鍵暗号のインタフェースである主な EVP_PKEY 関数の仕様を OpenSSL EVP_PKEY 関数 (公開鍵暗号) に示します.

RSA 暗号・署名 (EVP_PKEY)

OpenSSL の EVP_PKEY 関数を用いて,RSA の暗号化と署名を行うサンプルプログラムです.ソースプログラムは,rsa_evp.c です.

プログラムはコマンドとして起動するもので,仕様は以下です.

 rsa_evp [plainText]
  パラメータ:
    plainText : 暗号化および署名対象のテキストデータ

plainText を省略した場合は,プログラム内部の固定データが使われます.

プログラムでは,RSA の鍵ペア (秘密鍵,公開鍵) を生成します (公開鍵長は 2048 ビット).また,生成した鍵を使って,テキストデータを暗号化・復号,署名生成・検証を行い処理が正常に行われることを確認します.

DSA 署名 (EVP_PKEY)

OpenSSL の EVP_PKEY 関数を用いて,DSA 署名を行うサンプルプログラムです.ソースプログラムは,dsa_evp.c です.

プログラムはコマンドとして起動するもので,仕様は以下です.

 dsa_evp [[dataLen [paramLen]]
  パラメータ:
    dataLen : 署名対象データのバイト長  (省略時は,256)
    paramLen: DSA のパラメータのビット長 (省略時は,1024)

プログラムでは,DSA のパラメータを生成した後,鍵ペア (秘密鍵,公開鍵) を生成します.次に,生成した鍵を使って,指定バイト長の乱数データに対する署名生成・検証を行い処理が正常に行われることを確認します.

inserted by FC2 system