ヴィジュネル暗号エンコーダー

ヴィジュネル暗号は、1553年にジョヴァン・バッティスタ・ベラソが初めて記述し、後にブレーズ・ド・ヴィジュネルに誤って帰属された暗号で、繰り返すキーワードに応じて各文字を異なる量だけずらします。300年にわたり「le chiffre indéchiffrable(解読不能な暗号)」と呼ばれましたが、1863年にフリードリヒ・カシスキーの統計的攻撃によってついに破られました。このエンコーダーでは、パズルやCTFの問題、教室での暗号学のために暗号化と復号を試せます。

ヴィジュネル暗号の使い方

  1. 1

    メッセージを入力する

    A から Z の文字がずらされます。数字、スペース、句読点、ラテン文字以外の文字はそのまま通過します。

  2. 2

    キーワードを設定する

    任意の単語やフレーズを選びます。使われるのは文字だけで、長いキーワードほど解読が難しくなります。

  3. 3

    暗号化か復号を選ぶ

    同じツールがヴィジュネル方陣を使って両方向を処理します。

  4. 4

    結果を読む

    各文字は対応するキーワードの文字の分だけずれます(A=0、B=1 など)。大文字と小文字は保たれます。

手順を追った例

ツールは Hello World とキー KEY で始まります。暗号化すると次のようになります。

Text: Hello World
Key:  KEYKE YKEYK
Out:  Rijvs Uyvjn

大文字・小文字が保たれ(H は大文字のまま R になる)、スペースはそのまま残り、キーのポインタは文字のときだけ進むことに注目してください。同じキーで復号に切り替えると、Rijvs Uyvjn は再び Hello World に戻ります。

ヴィジュネル方陣

各文字とキーの各文字が、26x26 のシーザーずらしの格子から行と列を選びます。文字が H でキーの文字が K なら、出力は R です。H (7) + K (10) = 17 = R だからです。古典的な教科書の例では、繰り返すキーを使います。

Text: ATTACKATDAWN
Key:  LEMONLEMONLE
Out:  LXFOPVEFRNHR

以前の暗号を破った理由

シーザーやアトバッシュのような単一換字式暗号は E を常に同じように変換するため、暗号文で最も多い文字が平文で最も多い文字を暴いてしまいます。ヴィジュネルはずらす量を回転させるので、E があるときは X、次は K になり、文字の頻度を平らにして単純な解析を打ち破ります。

カシスキー攻撃を1段落で

暗号文の中で一定の間隔をあけて繰り返される文字のまとまりは、キー長がその間隔を割り切ることを示唆します。そうした間隔をいくつか集めて最大公約数を取れば、ありそうなキー長が得られます。暗号文をその数のシーザー列に分け、それぞれに頻度分析を行います。

セキュリティに関する注意

ヴィジュネルは教育目的の価値しかない古典暗号です。現代のどんな攻撃にも安全ではありません。6文字のキーの短い英語テキストは数秒で解読できます。本当の機密性には、手作業の暗号ではなく、検証済みライブラリの AES-GCM か ChaCha20-Poly1305 を使ってください。

よくある質問

ラテン文字 A-Z の26文字だけがずれます。日本語(ひらがな、カタカナ、漢字)、数字、句読点などラテン文字以外はそのままコピーされます。暗号化するにはラテン文字で入力してください。

はい。小文字のテキストは小文字の出力になり、大文字は大文字のままです。キーワード自体は大文字・小文字を区別しません。

もちろんです。初心者向けCTFの定番です。ヒントには問題文にキー長が書かれていたり、暗号文に繰り返す文字のまとまりが残されていたりします。

入力したテキストとキーは、暗号を計算するために当社のサーバーへ送られて処理され、保存もログ記録もされません。ヴィジュネルは安全ではないので、本物の秘密を古典暗号で暗号化しないでください。

関連ツール

このツールは他の言語でも利用できます