(updated 2020/04/26)
電気通信大学 情報理工学域 II類
情報通信工学プログラム/電子情報学プログラム
情報通信工学実験B / 電子情報学実験B
実験課題「情報通信(情報セキュリティ)」
参考プログラムの使用方法の例
以下に次の4項目について示す:
「作業ディレクトリの作成と参考プログラムのコピー」
「ファイルの複製(コピー)を生成するプログラム a2a.c を用いてのコンパイル方法の例」
「シフト暗号の使用方法の例」
「RSA暗号の使用方法の例」
----------------------- 作業ディレクトリの作成と参考プログラムのコピー -----------------------
[ka103019@blue99 ~]$ date
2020年 4月 26日 日曜日 15:23:36 JST
[ka103019@blue99 ~]$ hostname
blue99
[ka103019@blue99 ~]$
[ka103019@blue99 ~]$ mkdir ~/jikkenRSA //ディレクトリの作成
[ka103019@blue99 ~]$ cd ~/jikkenRSA //作成したディレクトリへの移動
[ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ ls -la
合計 4
drwxr-xr-x 2 ka103019 staffs 10 4月 26 15:23 .
drwxr-xr-x 47 ka103019 staffs 4096 4月 26 15:23 ..
[ka103019@blue99 ~]$
[ka103019@blue99 ~/jikkenRSA]$ cp /ced-home/staff/kurihara/prog/* . //指定のディレクトリから現在のディレクトリにファイルをコピーする
[ka103019@blue99 ~/jikkenRSA]$ ls
1Mbyte.dat a2av4.c gcd.out prg3bincnt.out rsabin.out
256byte.dat a2av4.out lcm.out prg3cnt.out shift-1byte.out
2Mbyte.dat aoo prg1.c prg5RSA.out shift.out
500Kbyte.dat byte.out prg2.c prime.out uecoo
a2AA.c findinge.out prg3.out rsa.out weoo
a2a.c foo prg3bin.out rsa128.out
[ka103019@blue99 ~/jikkenRSA]$
-----------------------------
-------- ファイルの複製(コピー)を生成するプログラム a2a.c を用いてのコンパイル方法の例 -----------------------------
[ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep a2a
-rw-r--r-- 1 ka103019 staffs 4272 4月 26 15:24 a2a.c
-rw-r--r-- 1 ka103019 staffs 5534 4月 26 15:24 a2av4.c
-rwxr-xr-x 1 ka103019 staffs 7367 4月 26 15:24 a2av4.out
[ka103019@blue99 ~/jikkenRSA]$ gcc -o a2a.out a2a.c //a2a.cをコンパイル
[ka103019@blue99 ~/jikkenRSA]$ 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
-rw-r--r-- 1 ka103019 staffs 5534 4月 26 15:24 a2av4.c
-rwxr-xr-x 1 ka103019 staffs 7367 4月 26 15:24 a2av4.out
[ka103019@blue99 ~/jikkenRSA]$ ./a2a.out //何も指定せずに、単に、実行ファイルa2a.outを実行してみる
usage : ./a2a.out InputFILE OutputFILE //すると、入力ファイル 出力ファイル の順に指定して、実行ファイルを実行する使用法(usage)が表示される
[ka103019@blue99 ~/jikkenRSA]$ cat uecoo //catコマンドでコピー元のファイルの中身を確認
The University of Electro Communications
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 101 4月 26 15:24 aoo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
-rw-r--r-- 1 ka103019 staffs 52 4月 26 15:24 weoo
[ka103019@blue99 ~/jikkenRSA]$ ./a2a.out uecoo goo //入力ファイル名 uecoo と出力ファイル名 goo を指定して実行する
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep oo //出力ファイルgooが生成されていることが確認できる
-rw-r--r-- 1 ka103019 staffs 101 4月 26 15:24 aoo
-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
-rw-r--r-- 1 ka103019 staffs 52 4月 26 15:24 weoo
[ka103019@blue99 ~/jikkenRSA]$ cat goo //catコマンドで生成された複製ファイルgooの中身を確認すると、目視では、uecooと同じ内容のようだ
The University of Electro Communications
[ka103019@blue99 ~/jikkenRSA]$ diff uecoo goo //diffコマンドを用いて、データとしての違い(差分)がないかを確認。何も表示されないことより、uecooとgooの中身は同じと判断できる
[ka103019@blue99 ~/jikkenRSA]$
-----------------------------
----------------------------- シフト暗号の使用方法の例 -----------------------------
[ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep shift
-rwxr-xr-x 1 ka103019 staffs 7563 4月 26 15:24 shift-1byte.out
-rwxr-xr-x 1 ka103019 staffs 13152 4月 26 15:24 shift.out
[ka103019@blue99 ~/jikkenRSA]$ ./shift.out //シフト暗号の実行ファイルを、何も指定せずに、実行してみる
usage : ./shift.out -[ed] k InputFILE OutputFILE //実行ファイルの使用法が表示される
Try `./shift.out -h' for more information. //オプション「-h」で、さらなる情報が得られると、表示される
[ka103019@blue99 ~/jikkenRSA]$ ./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(復号後のファイル) の場合の使用例
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 101 4月 26 15:24 aoo
-rw-r--r-- 1 ka103019 staffs 25 4月 26 15:24 foo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
-rw-r--r-- 1 ka103019 staffs 52 4月 26 15:24 weoo
[ka103019@blue99 ~/jikkenRSA]$ cat foo
WEWILLMEETATCHOFUSTATION
[ka103019@blue99 ~/jikkenRSA]$ ./shift.out -e 5 foo goo //暗号化の実行
[ka103019@blue99 ~/jikkenRSA]$ cat goo //暗号文の中身を確認。確かに、鍵k=5で暗号化されている
BJBNQQRJJYFYHMTKZXYFYNTS
[ka103019@blue99 ~/jikkenRSA]$ ./shift.out -d 5 goo hoo //復号化の実行
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 101 4月 26 15:24 aoo
-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
-rw-r--r-- 1 ka103019 staffs 52 4月 26 15:24 weoo
[ka103019@blue99 ~/jikkenRSA]$ cat hoo //復号後のひら文の中身を確認。確かに、目視では、元のfooの内容と同じ
WEWILLMEETATCHOFUSTATION
[ka103019@blue99 ~/jikkenRSA]$ diff foo hoo //diffコマンドを用いて、データとしての違い(差分)がないかを確認。
[ka103019@blue99 ~/jikkenRSA]$
-----------------------------
----------------------------- RSA暗号の使用方法の例 -----------------------------
[ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ ./rsa.out
usage : ./rsa.out -[ed] e/d n InputFILE OutputFILE
Try `./rsa.out -h' for more information.
[ka103019@blue99 ~/jikkenRSA]$ ./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 の場合の例
[ka103019@blue99 ~/jikkenRSA]$ cat foo
WEWILLMEETATCHOFUSTATION
[ka103019@blue99 ~/jikkenRSA]$ ./rsa.out -e 5 323 foo goo //公開鍵(e,n)=(5,323), ひら文foo, 暗号文goo での実行例
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 101 4月 26 15:24 aoo
-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:30 hoo
-rw-r--r-- 1 ka103019 staffs 41 4月 26 15:24 uecoo
-rw-r--r-- 1 ka103019 staffs 52 4月 26 15:24 weoo
[ka103019@blue99 ~/jikkenRSA]$ cat goo //catコマンドで暗号文gooを確認すると文字化けしている
S g S c � � � g g 2 2 � � � W 2 2 c � l � [ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ ./rsa.out -d 29 323 goo hoo //復号化鍵(d,n)=(29,323), 暗号文goo, 復号後のファイルhoo での実行例
[ka103019@blue99 ~/jikkenRSA]$ ls -la | grep oo
-rw-r--r-- 1 ka103019 staffs 101 4月 26 15:24 aoo
-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
-rw-r--r-- 1 ka103019 staffs 52 4月 26 15:24 weoo
[ka103019@blue99 ~/jikkenRSA]$ cat hoo
WEWILLMEETATCHOFUSTATION
[ka103019@blue99 ~/jikkenRSA]$ diff foo hoo //diffコマンドを用いて、データとしての違い(差分)がないかを確認。
[ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ cat foo
WEWILLMEETATCHOFUSTATION
[ka103019@blue99 ~/jikkenRSA]$ od -A d -t c -t u1 foo //ひら文fooに対し、オプションを指定してodコマンドを使用
0000000 W E W I L L M E E T A T C H O F
87 69 87 73 76 76 77 69 69 84 65 84 67 72 79 70
0000016 U S T A T I O N \n
85 83 84 65 84 73 79 78 10
0000025
[ka103019@blue99 ~/jikkenRSA]$ od -A d -t c -t u2 foo
0000000 W E W I L L M E E T A T C H O F
17751 18775 19532 17741 21573 21569 18499 17999
0000016 U S T A T I O N \n
21333 16724 18772 20047 10
0000025
[ka103019@blue99 ~/jikkenRSA]$ cat goo
S g S c � � � g g 2 2 � � � W 2 2 c � l � [ka103019@blue99 ~/jikkenRSA]$
[ka103019@blue99 ~/jikkenRSA]$ od -A d -t c -t u1 goo //catコマンドで暗号文gooを表示させると文字化けなので、odコマンドを用いて表示させてみる(オプション「-t u1」の場合)
0000000 S \0 g \0 S \0 c \0 367 \0 367 \0 345 \0 g \0
83 0 103 0 83 0 99 0 247 0 247 0 229 0 103 0
0000016 g \0 2 \0 \f \0 2 \0 001 025 \0 201 \0 271 \0
103 0 50 0 12 0 50 0 32 1 21 0 129 0 185 0
0000032 273 \0 W \0 2 \0 \f \0 2 \0 c \0 201 \0 l \0
187 0 87 0 50 0 12 0 50 0 99 0 129 0 108 0
0000048 301 \0
193 0
0000050
[ka103019@blue99 ~/jikkenRSA]$ od -A d -t c -t u2 goo //catコマンドで暗号文gooを表示させると文字化けなので、odコマンドを用いて表示させてみる(オプション「-t u2」の場合)
0000000 S \0 g \0 S \0 c \0 367 \0 367 \0 345 \0 g \0
83 103 83 99 247 247 229 103
0000016 g \0 2 \0 \f \0 2 \0 001 025 \0 201 \0 271 \0
103 50 12 50 288 21 129 185
0000032 273 \0 W \0 2 \0 \f \0 2 \0 c \0 201 \0 l \0
187 87 50 12 50 99 129 108
0000048 301 \0
193
0000050
[ka103019@blue99 ~/jikkenRSA]$
-----------------------------
以上