- a2a.c :
ファイル名 uecoo の内容と同じものを ファイル名 goo にコピーする例。
$ gcc -o a2a.out a2a.c //オプション -o で実行ファイル名 a2a.out を指定して,コンパイルする(コンパイルの仕方)
$ cat uecoo //catコマンドでファイルの中身を確認
The University of Electro Communications
$ ./a2a.out uecoo goo //入力ファイルuecoo、 出力ファイルgoo
$ cat goo
The University of Electro Communications
$ diff -s uecoo goo //オプション -s をつけて diffコマンドを用いて、データとしての違いがないかを確認。
ファイル uecoo と goo は同一です
$
- a2AA.c :ファイル名 uecoo の内容に記述されている中の英字における大文字を小文字に変換し、一方、小文字を大文字に変換し、ファイル名 goo に出力する例。
$ gcc -o a2AA.out a2AA.c //オプション -o で実行ファイル名 a2AA.out を指定して,コンパイルする
$ cat uecoo //catコマンドでファイルの中身を確認
The University of Electro Communications
$ ./a2AA.out uecoo goo //入力ファイルuecoo、 出力ファイルgoo
$ cat goo
tHE uNIVERSITY OF eLECTRO cOMMUNICATIONS
$
- shift.out : シフト暗号の実行例 (共通鍵 k=5 の場合の例)
(下記において、catコマンドでファイルの内容を文字で表示しているが、odコマンドを用いることで、バイナリーデータとして内容を表示することかできる)
$ cat foo //catコマンドでファイの中身を確認
WEWILLMEETATCHOFUSTATION
$ ./shift.out -e 5 foo goo // 暗号化 オプション -e, 鍵 5, 入力ファイル名(平文):foo, 出力ファイル名(暗号文):goo
$ cat goo
BJBNQQRJJYFYHMTKZXYFYNTS
$ ./shift.out -d 5 goo hoo // 復号化 オプション -d, 鍵 5, 入力ファイル名(暗号文):goo, 出力ファイル名(推定平文):hoo
$ cat hoo
WEWILLMEETATCHOFUSTATION
$ diff -s foo hoo //オプション -s をつけて diffコマンドを用いて、データとしての違いがないかを確認。
ファイル foo と hoo は同一です
$
$ ./shift.out //入力値を指定しないでプログラムを実行すると利用法が表示される
usage : ./shift.out -[ed] k InputFILE OutputFILE
Try `./shift.out -h' for more information.
$ ./shift.out -h //オプション「-h」を指定すると、少し詳しい利用法が表示される
Encryption : k is an encryption key.
: ./shift.out -e e InputFILE OutputFILE
Example : ./shift.out -e 5 foo goo
:
Decryption : k is a decryption key.
: ./shift.out -d k InputFILE OutputFILE
Example : ./shift.out -d 5 goo hoo
$
odコマンドを用いて、「ひら文ファイル foo」と「暗号化文ファイル goo」の内容をバイナリーデータとして表示する。
(odコマンドの利用例は
このページ
を参照)
$ cat foo
WEWILLMEETATCHOFUSTATION
$ od -A d -t c foo
0000000 W E W I L L M E E T A T C H O F
0000016 U S T A T I O N \n
0000025
$ 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 c -t u1 foo
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
$ ./shift.out -e 5 foo goo
$ cat goo
BJBNQQRJJYFYHMTKZXYFYNTS
$ od -A d -t c -t u1 goo
0000000 B J B N Q Q R J J Y F Y H M T K
66 74 66 78 81 81 82 74 74 89 70 89 72 77 84 75
0000016 Z X Y F Y N T S \n
90 88 89 70 89 78 84 83 10
0000025
$
-
rsa.out : RSA暗号の実行例 : (公開鍵(9929,32399), 秘密鍵(9329,32399)とした場合の例)
(下記において、catコマンドで暗号文のファイルを表示すると文字化けするが、odコマンドを用いることで、バイナリーデータとして内容を表示することができる)
$ cat foo
WEWILLMEETATCHOFUSTATION
$ ./rsa.out -e 9929 32399 foo goo // 暗号化 オプション -e, 公開鍵(9929,32399), 入力ファイル名(平文):foo, 出力ファイル名(暗号文):goo
$
$ cat goo // 文字化けしているので、正しく表示できない
�I�Iee�/��o��#�o�4�
�w��o��o�aL[$
$
$ ./rsa.out -d 9329 32399 goo hoo // 復号化 オプション -d, 秘密鍵(9329,32399), 入力ファイル名(暗号文):goo, 出力ファイル名(推定平文):hoo
$ cat hoo
WEWILLMEETATCHOFUSTATION
$ diff -s foo hoo //オプション -s をつけて diffコマンドを用いて、データとしての違いがないかを確認。
ファイル foo と hoo は同一です
$
$ ls -la | grep oo
-rw-r--r-- 1 xx staffs 25 Aug 31 14:40 foo // foo, goo, hoo のファイルサイズを比較してみる
-rw-r--r-- 1 xx staffs 50 Oct 2 15:28 goo
-rw-r--r-- 1 xx staffs 25 Oct 2 15:28 hoo
-rw-r--r-- 1 xx staffs 41 Aug 31 14:40 uecoo
$
$ ./rsa.out //入力値を指定しないでプログラムを実行すると利用法が表示される
usage : ./rsa.out -[ed] e/d n InputFILE OutputFILE
Try `./rsa.out -h' for more information.
$ ./rsa.out -h //オプション「-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
:
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
$
odコマンドを用いて、「ひら文ファイル foo」と「暗号文ファイル goo」の内容をバイナリーデータとして表示する。
ただし、以下の例では、公開鍵は(5,323)とし、暗号文ファイル goo は 1バイト単位 と 2バイト単位 のそれぞれで表示する。
(odコマンドの利用例は
このページ
を参照)
$ cat foo
WEWILLMEETATCHOFUSTATION
$ od -A d -t c -t u1 foo
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
$ ./rsa.out -e 5 323 foo goo
$ cat goo
SgSc���gg2
2 ���W2
2c�l$
$
$
$ od -A d -t c -t u1 foo
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
$ od -A d -t u1 goo
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
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
$
- prime.out : 100までの素数と、10000までの素数を求める実行例
$ ./prime.out 100 // 100までの素数を求める
...start Finding Primes.
...Finding primes in the range [2,3, ... ,100]
------------
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
------------
The number of primes is 25
...end Finding Primes.
$
$
$ ./prime.out 10000 // 10000までの素数を求める
...start Finding Primes.
...Finding prime in range [2,3, ... ,10000]
------------
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
(中省略)
9817 9829 9833 9839 9851 9857 9859 9871 9883 9887
9901 9907 9923 9929 9931 9941 9949 9967 9973
------------
The number of primes is 1229
...end Finding Primes.
$
-
gcd.out :拡張ユークリッド法と最大公約数を求める実行例(入力が 144, 29 の場合)
$ ./gcd.out 144 29
...start finding gcd(144,29) and (f,g) such that f*(144)+g*(29)=gcd(144,29)
Input : ( a, b ) = ( 144, 29 )
Output : gcd( a, b ) = gcd( 144, 29 ) = 1
: ( f, g ) = ( -1, 5 )
such that ( f * a ) + ( g * b ) = gcd( a, b )
that is ( -1 * 144 ) + ( 5 * 29 ) = 1
...end.
$
-
lcm.out : 最小公倍数を求める実行例(入力が 16, 18 の場合)
$ ./lcm.out 16 18
...start finding lcm(16,18)
Input : ( a, b ) = ( 16, 18 )
Output : lcm(a,b) = lcm(16,18) = (16*18) / gcd(16,18) = 144
where 16*18=288 and gcd(16,18) = 2
...end.
$
-
findinge.out : 144に対し、gcd(e,144)=1 かつ 1< e < 144 を満たす e をすべて求める実行例
$ ./findinge.out 144
...start Computing keys by Euclid algorithm(Command Line version).
...Finding inegers e such that gcd(e,144)=1 and 1 < e < 144. ---------------- 5, 7, 11, 13,
17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53, 55, 59, 61, 65, 67, 71, 73, 77, 79,
83, 85, 89, 91, 95, 97, 101, 103, 107, 109, 113, 115, 119, 121, 125, 127, 131, 133, 137,
139, 143, ---------------- ...end Computing keys by Euclid algorithm(Command Line version).
$
以上