シーザー暗号は、秘密軍事通信に使用したジュリアス シーザー (紀元前 100 年 – 紀元前 44 年) にちなんで名付けられました。シーザー暗号は換字式暗号です。ジュリアス・シーザーは当初、メッセージの暗号化と復号化に 3 つのシフトを使用していました。暗号化はアフィン関数 f(x)=x+b を使用して実行されます。
まず、最初のテキスト (暗号化するメッセージ) の各文字が、26 文字を含むラテン文字の位置に対応する 0 から 25 の数字に変換されます --> (a = 0, b = 1 ... z) = 25 )。
次に、得られた各数値をアフィン関数 (f(x) = 1x + b) で変換します。 「x」は数値を表し、「b」は暗号化時に定義されます。 「b」は、最終メッセージを復号化するために使用されるキーです。
すべての画像を取得してリストに入れると、最初のテキストの n 文字に対応する n 個の数値が得られます。次のステップは、各数値の 26 を法とする値を見つけることで構成されます。 (モジュロは剰余を意味します)
例:
19 = 4 * 4 + 3
であるため、19 のモジュロ 4 は3になります。一方、26 = 26 * 1 + 0
であるため、26 のモジュロ 26 は0になります。
したがって、それぞれ 0 ~ 25 の両方が含まれる n 個の要素を持つ新しいリストを取得します。これらの数値はすべて、以下の表を使用してラテン文字の文字に変換されます。
最後にすべての文字を並べて最終メッセージを作成します。
ステップ 1 と 4 は、次のテーブルを使用して実行できます。
あ | B | C | D | E | F | G | H | 私 | J | K | L | M | N | ○ | P | Q | R | S | T | U | V | W | × | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 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 |
メッセージが Caesar Cipher を使用して暗号化されていることを攻撃者が知っている場合、攻撃者はメッセージを復号化するためにすべてのシフト (1 から 25 までの b 値) を試みることができます。これはブルートフォース手法と呼ばれます。
各文字は同じアルゴリズムで暗号化されており、英語で最も一般的な文字は次のとおりであるため、頻度分析を使用してメッセージを復号することもできます。
上記の表を使用すると、 ATTACK は次のように記述できます: 25 0 19 19 0 2 10 25各数値のイメージ:
新しいリストは: 29 4 23 23 4 6 14 29
モジュロ 26 メソッドを使用すると、次が得られます。
最後のメッセージは3 4 23 23 4 6 14 3で、テーブルを再度使用して、暗号化されたメッセージに変換します。
デクセゴッド
ZATTACKZ は関数x + 4で暗号化され、 DEXXEGODになります。
上記の表を使用すると、 DEXXEGOD は次のように書くことができます: 3 4 23 23 4 6 14 3各数値のイメージ:
新しいリストは次のとおりです: -1 0 19 19 0 2 10 -1
モジュロ 26 法を使用すると、次が得られます。
最後のメッセージは25 0 19 19 0 2 10 25で、再びテーブルを使用して、暗号化されたメッセージに変換します。
ザタックズ
DEXXEGOD は関数1x-4で復号化され、 ZATTACKZになります。
これはブルートフォース手法と呼ばれます。
上記の表を使用すると、 DEXXEGOD は次のように記述できます: 3 4 23 23 4 6 14 3
a は 0 ~ 25 の数値です (a = 0 は、メッセージがすでに復号化されていることを意味します)。
関数 f(x) = Mod(1x + a, 26) を使用すると、次のようになります。
これらすべての結果を取得できます。
ある | 復号化されたテキスト |
---|---|
1 | fgzzgiqf |
2 | ガァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァッ |
3 | ヒビクシュ |
4 | ijccjlti |
5 | jkddkmuj |
6 | クレルンヴク |
7 | ふむふむ |
8 | mnggnpxm |
9 | ノホキン |
10 | オピイプルゾ |
11 | pqjjqsap |
12 | qrkkrtbq |
13 | rsllsucr |
14 | stmmtvds |
15 | タヌウェット |
16 | ウボフフ |
17 | vwppwygv |
18 | wxqqxzhw |
19 | キシリャイクス |
20 | ゆずさび |
21 | ザアタックス |
22 | アブブドラ |
23 | bcvvcemb |
24 | cdwwdfnc |
25 | デクセゴッド |
意味のある唯一のテキストは ztuckz であるため、キーは 21 (25 - b = 21) であると推測できます。
DEXXEGODは関数f(x) = 1x - 4またはf(x) = 1x + 21で復号され、 ZATTACKZになります。
言語 | 暗号化する | 復号化 |
---|---|---|
C | シーザーC | 近日公開 |
C# | シーザーCS | 近日公開 |
C++ | main.cpp | main.cpp |
JavaScript | 暗号化.js | 復号化.js |
パイソン | 暗号化.py | 復号化.py |
迅速 | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher