電気通信大学 情報理工学部 情報通信工学科
情報通信システム実験第二B / 電子情報システム実験第二B (2012年度後期)
実験課題「情報通信(情報セキュリティ)」
課題 1 のプログラムを作成するためのアプローチ例
C言語でプログラミングを行うのが,
2年生後学期のプログラミング演習の授業以来である場合は,
以下の練習プログラムを順番に作成してみよう.
課題 1 のRSA暗号のプログラムを作成するための方針例を以下に示す.
以下の説明を順に読み進め,作業をしてみてください.
- 練習プログラム
-
「Hello! という文字を表示させるプログラムを作成せよ」
(
ヒント prg1.c
)
-
「整数 a と b を入力すると,和 a+b を計算し,出力するプログラムを作成せよ」
(
ヒント prg2.c
)
-
「整数 M, e, n を入力すると,べき乗 M^e (mod n) を計算し,出力するプログラムを作成せよ」
(ヒント : 上記の prg2.c を改良し作成してみよ)
例えば,(M,e,n)=(288,29,323) のとき,(288)^(29)=67 (mod 323)となることを確認せよ.注意:べき乗を計算する pow関数を用いたのでは,正しく計算できない.
(上記仕様のプログラムの例:
実行ファイル prg3.out
)(mac上でコンパイルしたもの)
-
参考プログラム
-
次のプログラムを説明する前に,
ファイルデータの入出力と
1バイトデータの取り扱いの理解を補助する
プログラム a2av4.c
を示す.
このプログラムは,ファイルコピーを実行する
プログラム a2a.c
を改編したものである.
- 練習プログラム
-
課題テキストにて説明したシフト暗号では,メッセージと暗号文の
文字はいずれも26種類で,以下のように設定した.
メッセージ集合 {A,B,...,Z}={65,67,...,90}
暗号文集合 {A,B,...,Z}={65,67,...,90}
鍵集合 {0,1,...,25}
このような仕様の参考プログラムの例として
shift.c
を示す.
上記のプログラムを1バイトのデータを扱えるプログラムに改良し,
以下の仕様を満たすシフト暗号のプログラムを作成せよ.
つまり,
メッセージと暗号文の文字はいずれも256種類とする.
メッセージ集合 {0,1,...,255}
暗号文集合 {0,1,...,255}
鍵集合 {0,1,...,255}
- 練習プログラム
-
以下の仕様を満たすRSA暗号のプログラムを作成せよ.
メッセージの文字は128種類(7ビット),
暗号文の文字は n 種類( 128 <= n <=255 )
となるように,以下のように設定する.
暗号文の文字は1バイトで表現できるサイズとする.
メッセージ集合 {0,1,...,127}
暗号文集合 {0,1,...,n-1}
-
上記のプログラムにおいて,メッセージの文字として
1バイトのデータを扱えるプログラムに改良し,
以下の仕様を満たすRSA暗号のプログラムを作成せよ(課題 1 ).
メッセージ集合 {0,1,...,255}
暗号文集合 {0,1,...,n-1}
具体的には,メッセージの文字は256種類(1バイト=8ビット),
暗号文の文字は n 種類( 2^8 = 256 <= n <= 2^(15)-1 )
となるようにする.
暗号文の文字は2バイトで表現できるサイズとする.
-
上記の仕様を満たすRSA暗号で,途中結果を表示するプログラムの例:
実行ファイル prg5RSA.out
(mac上でコンパイルしたもの).