暗号理論は数学の一分野
今まで見た限りでは暗号はどちらかといえば数学というよりは言語学など、言葉の学問に属するような気がしませんか?どうして数学が専門である私が暗号の話をしているのか、不思議な人も多いのではないでしょうか?
それは、現代社会がコンピュータを用いて様々な情報をやりとりしていることと大いに関係があります。
文章を数字の列に変えるしくみ
コンピューターは日本語やアルファベットなどの文字を直接理解することが出来ません。コンピューターはASCIIコードと呼ばれる表を使って文字を数字に対応させることにより(さらに言えば2進数に変換して)、文字を認識しています。
(ASCII表の例)
文字 |
0 |
1 |
2 |
… |
9 |
… |
A |
B |
… |
Z |
… |
a |
b |
… |
z |
ASCII code |
48 |
49 |
50 |
… |
57 |
… |
65 |
66 |
… |
90 |
… |
97 |
98 |
… |
122 |
したがってコンピューターを用いた暗号化の手順は、例えば
のようになります。暗号として重要なのは数字の列を他の数字の列に変換するところですから、結局暗号化とは「数字の列を他の数字の列に入れ替える」作業になるわけです。数字を扱うから、これは数学の出番だ!というわけですね。
例えば、ASCII表の代わりに次のような表を考えましょう。
文字 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
番号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
この表を用いて「LEMON」という単語を暗号化するとどうなるでしょうか?下の表はその図式化です。