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

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

暗号ライブラリとして,OpenSSL を用いています.

バーナム (Vernam) 暗号

バーナム暗号によりファイルを暗号化/復号するプログラムです.バーナム暗号は,暗号化する対象 M と同じ長さの鍵 K を用意し,1 文字毎に鍵と暗号化の対象を XOR (排他的論理和) 演算して暗号文 C を生成するものです. 鍵として規則性の無い乱数列 (One-time pad) を用い,鍵の周期を無限大とすれば,この暗号は完全に安全な暗号となります.

ここでは,擬似乱数生成関数により鍵を生成します(任意のファイル内容を鍵として設定することも可能). ソースプログラムは,vernam.c です.

プログラムはコマンドとして起動します.

  vernam [-fFile] [-sSeed] {-e|-d} inFile outFile

  パラメータ:
    -f[File] : 鍵をファイル File から読み込む.
    -s[Seed] : 鍵を生成する.
               Seed : 1 〜 16文字
    -e : 暗号化モード
    -d : 復号モード
    inFile  : 入力ファイル (または 'stdin')
    outFile : 出力ファイル (または 'stdout')

コンパイル時の注意点は,以下です.

inserted by FC2 system