(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を確認すると文字化けしている
SgSc���gg22 ���W22c�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
SgSc���gg22 ���W22c�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]$ 
-----------------------------
以上