(updated 2022/8/16)
電気通信大学 情報理工学域 II類
情報通信工学プログラム/電子情報学プログラム
情報通信工学実験B / 電子情報学実験B
実験課題「情報通信(情報セキュリティ)」
参考プログラムの使用方法の例
以下に次の4項目について示す:
$ cd //ホームディレクトリに戻る
$ mkdir jikkenRSA //作業用ディレクトリ jikkenRSA を作成
$ cd jikkenRSA //作成したディレクトリへの移動
$ cp /ced-home/staff/kurihara/prog3/* . //指定ディレクトリから現在位置のディレクトリにファイルをコピーする
$ ls -l
合計 4156
-rw-r--r-- 1 ka103019 staffs 256 Aug 16 14:57 256byte.dat // 1バイトで表現できる256種類のデータが記載されたファイル。ファイルサイズも 256byte.
-rw-r--r-- 1 ka103019 staffs 2097152 Aug 16 14:57 2Mbyte.dat // 計算時間を計測するときに用いる2Mbyteのファイル。
-rw-r--r-- 1 ka103019 staffs 5975 Aug 16 14:57 a2AA.c
-rw-r--r-- 1 ka103019 staffs 4272 Aug 16 14:57 a2a.c
-rwxr-xr-x 1 ka103019 staffs 8712 Aug 16 14:57 findinge.out
-rw-r--r-- 1 ka103019 staffs 25 Aug 16 14:57 foo
-rwxr-xr-x 1 ka103019 staffs 7270 Aug 16 14:57 gcd.out
-rwxr-xr-x 1 ka103019 staffs 7270 Aug 16 14:57 lcm.out
-rwxr-xr-x 1 ka103019 staffs 16880 Aug 16 14:57 prime.out
-rwxr-xr-x 1 ka103019 staffs 13232 Aug 16 14:57 rsa.out
-rwxr-xr-x 1 ka103019 staffs 13240 Aug 16 14:57 rsabin.out
-rwxr-xr-x 1 ka103019 staffs 13152 Aug 16 14:57 shift.out
-rw-r--r-- 1 ka103019 staffs 41 Aug 16 14:57 uecoo
$
ファイルの複製(コピー)を生成するプログラム a2a.c を用いてのコンパイル方法の例
$ gcc -o a2a.out a2a.c //a2a.cをコンパイル
$ ls -la | grep a2a
-rw-r--r-- 1 ka103019 staffs 4272 4月 26 15:24 a2a.c
-rwxr-xr-x 1 ka103019 staffs 8800 4月 26 15:26 a2a.out
$ ./a2a.out //何も指定せずに、単に、実行ファイルa2a.outを実行してみる
usage : ./a2a.out InputFILE OutputFILE //すると、入力ファイル 出力ファイル の順に指定して、実行ファイルを実行する使用法(usage)が表示される
$ cat uecoo //catコマンドでコピー元のファイルの中身を確認
The University of Electro Communications
$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
$ ./a2a.out uecoo goo //入力ファイル名 uecoo と出力ファイル名 goo を指定して実行する
$ ls -la | grep oo //出力ファイルgooが生成されていることが確認できる
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:28 goo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
$ cat goo //catコマンドで生成された複製ファイルgooの中身を確認すると、目視では、uecooと同じ内容のようだ
The University of Electro Communications
$ diff -s uecoo goo //オプション -s をつけて diffコマンドを用いて、データとしての違いがないかを確認。
ファイル uecoo と goo は同一です
$
シフト暗号の使用方法の例
$ ./shift.out //シフト暗号の実行ファイルを、何も指定せずに、実行してみる
usage : ./shift.out -[ed] k InputFILE OutputFILE //実行ファイルの使用法が表示される
Try `./shift.out -h' for more information. //オプション「-h」で、さらなる情報が得られると、表示される
$ ./shift.out -h //オプション「-h」を指定して実行すると、次のように具体的な使用法が表示される
Encryption : k is an encryption key.
: ./shift.out -e k InputFILE OutputFILE
Example : ./shift.out -e 5 foo goo //例えば、オプション「-e」で符号化、鍵k=5、入力ファイル名foo(ひら文)、出力ファイル名goo(暗号文) の場合の使用例
:
Decryption : k is a decryption key.
: ./shift.out -d k InputFILE OutputFILE
Example : ./shift.out -d 5 goo hoo //例えば、オプション「-d」で復号化、鍵k=5、入力ファイル名goo(暗号文)、出力ファイル名hoo(復号後のファイル) の場合の使用例
$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
$ cat foo
WEWILLMEETATCHOFUSTATION
$ ./shift.out -e 5 foo goo //暗号化の実行
$ cat goo //暗号文の中身を確認。確かに、鍵k=5で暗号化されている
BJBNQQRJJYFYHMTKZXYFYNTS
$ ./shift.out -d 5 goo hoo //復号化の実行
$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:30 goo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:30 hoo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
$ cat hoo //復号後のひら文の中身を確認。確かに、目視では、元のfooの内容と同じ
WEWILLMEETATCHOFUSTATION
$ diff -s foo hoo //オプション -s をつけて diffコマンドを用いて、データとしての違いがないかを確認。
ファイル foo と hoo は同一です
$
$ od -A d -t u1 foo
0000000 87 69 87 73 76 76 77 69 69 84 65 84 67 72 79 70
0000016 85 83 84 65 84 73 79 78 10
0000025
$ od -A d -t u1 goo
0000000 66 74 66 78 81 81 82 74 74 89 70 89 72 77 84 75
0000016 90 88 89 70 89 78 84 83 10
0000025
$
RSA暗号の使用方法の例
$
$ ./rsa.out
usage : ./rsa.out -[ed] e/d n InputFILE OutputFILE
Try `./rsa.out -h' for more information.
$ ./rsa.out -h
Encryption : (e,n) is an encryption key.
: ./rsa.out -e e n InputFILE OutputFILE
Example : (e, n, InputFILE, OutputFILE)=(9893, 32399, foo, goo)
: ./rsa.out -e 9893 32399 foo goo //例えば、オプション「-e」で暗号化、公開鍵(e,n)=(9893,32399), ひら文foo, 暗号文goo の場合の例
:
Decryption : (d,n) is a decryption key.
: ./rsa.out -d d n InputFILE OutputFILE
Example : (d, n, InputFILE, OutputFILE)=(7457, 32399, goo, hoo)
: ./rsa.out -d 7457 32399 goo hoo //例えば、オプション「-d」で復号化、復号化鍵(d,n)=(7457,32399), 暗号文goo, 復号後のファイルhoo の場合の例
$ cat foo
WEWILLMEETATCHOFUSTATION
$ ./rsa.out -e 5 323 foo goo //公開鍵(e,n)=(5,323), ひら文foo, 暗号文goo での実行例
$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 50 4月 26 15:32 goo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
$ cat goo //catコマンドで暗号文gooを確認すると文字化けしている
S g S c � � � g g 2 2 � � � W 2 2 c � l � $
$ ./rsa.out -d 29 323 goo hoo //復号化鍵(d,n)=(29,323), 暗号文goo, 復号後のファイルhoo での実行例
$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 50 4月 26 15:32 goo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:33 hoo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
$ cat hoo
WEWILLMEETATCHOFUSTATION
$ diff -s foo hoo //オプション -s をつけて diffコマンドを用いて、データとしての違いがないかを確認。
ファイル foo と hoo は同一です
$
$ cat foo
WEWILLMEETATCHOFUSTATION
$ od -A d -t u1 foo //ひら文fooに対し、オプションを指定してodコマンドを使用
0000000 87 69 87 73 76 76 77 69 69 84 65 84 67 72 79 70
0000016 85 83 84 65 84 73 79 78 10
0000025
$ od -A d -t u1 goo //catコマンドで暗号文gooを表示させると文字化けなので、odコマンドを用いて表示させてみる(オプション「-t u1」の場合)
0000000 83 0 103 0 83 0 99 0 247 0 247 0 229 0 103 0
0000016 103 0 50 0 12 0 50 0 32 1 21 0 129 0 185 0
0000032 187 0 87 0 50 0 12 0 50 0 99 0 129 0 108 0
0000048 193 0
0000050
$ od -A d -t u2 goo //catコマンドで暗号文gooを表示させると文字化けなので、odコマンドを用いて表示させてみる(オプション「-t u2」の場合)
0000000 83 103 83 99 247 247 229 103
0000016 103 50 12 50 288 21 129 185
0000032 187 87 50 12 50 99 129 108
0000048 193
0000050
$
以上