T

Text Machine

強力なテキストツールを、ブラウザで

縦列転置式暗号

古典的なキーワードベースの並べ替えである縦列転置式暗号を暗号化・復号しましょう。テキストはキーワードの下に一行ずつグリッドへ書き込まれ、続いて各列がキーワードの文字のアルファベット順に読み戻されます — 何も置き換えられず、すべての文字はただ移動されるだけです。不完全列か完全列かを選び、パディング文字を設定し、リアルタイムのグリッドを追いながら、結果をコピー・ダウンロード・共有できます。すべての処理はブラウザ上で実行されます。

キーワード

キーワード

キーワードを入力してください。その文字が列を決めます: テキストは列をまたいで一行ずつ書き込まれ、続いて列がキーワードのアルファベット順に読み出されます。同じ鍵文字が繰り返される場合は左から右の順で扱われます。

平文
暗号文

上にテキストを入力すると、結果がここに表示されます。

縦列転置式暗号 の使い方

  1. 1

    暗号化か復号を選ぶ

    平文を縦列転置式暗号文にかき混ぜるには暗号化を、暗号文を元のメッセージに戻すには復号を選びます。

  2. 2

    不完全列か完全列を選ぶ

    不完全は最後の行を短いまま残し、テキストをそのまま正確に返します。完全は選んだ文字でグリッドを完璧な長方形までパディングするので、すべての列が同じ長さになります。

  3. 3

    キーワードを入力する

    キーワードを入力します。その長さが列数を決め、その文字のアルファベット順が列を読む順序を決めます。双方とも同じキーワードを使わなければなりません。完全モードではパディング文字も設定できます。

  4. 4

    テキストを入力または貼り付ける

    メッセージを入力すると、入力すると同時に転置されます。暗号化グリッドが、鍵付けされた列に埋め込まれたテキストを、各列の読み出し順に番号を振って示します。

  5. 5

    コピー・ダウンロード・共有する

    結果をコピーしたり、テキストファイルとしてダウンロードしたり、入力したテキスト・キーワード・モード・パディングをそのまま整えてツールを開き直すリンクで共有したりできます。

縦列転置式暗号を理解する

縦列転置式暗号とは何ですか?

縦列転置式暗号は、メッセージを隠す最も古く、最も直感的な方法の一つです。これは転置式暗号であり、つまり文字そのものは何も変えず — その順序だけを変えます。暗号文中のすべての文字は、平文の中にあった文字そのものです。それらはただ、決まった反復可能な規則に従ってかき混ぜられただけです。その規則はキーワードによって定まり、これによって並べ替えは信頼する相手と簡単に共有でき、それを知らない者には元に戻すのが難しくなります。

発想は、メッセージをキーワードの文字の下に一行ずつグリッドへ書き込み、続いてグリッドを一列ずつ読み戻すというものです。コツは列を読む順序にあります: 左から右ではなく、キーワードの文字のアルファベット順に読むのです。キーワードがその順序を決めるので、キーワードを共有する二人は自由に暗号化・復号できる一方、列の順序はそれ以外の誰にとっても恣意的に見えます。

縦列転置式暗号の仕組み

まずキーワードをグリッドの上部に、一列につき一文字ずつ書きます。続いてその下にメッセージを書き、最初の行を左から右へ、次に二行目、というふうに、メッセージ全体が並ぶまで埋めていきます。列の数はキーワードの長さによって定まるので、六文字のキーワードはメッセージの長さに関わらず常に六列を作ります。

さて、キーワードの文字のアルファベット順に列に番号を振ります: アルファベットで最も早いキーワードの文字の下にある列が最初に読まれ、次に早いものが二番目、というふうに続きます。キーワードに同じ文字が二つある場合、それらの列は現れる順に左から右へ読まれます。最後に、その番号順にグリッドを一列ずつ読み、各列の文字を順に書き出します。得られる文字列が暗号文です。復号するには、その過程を逆にたどります: 空のグリッドを組み立て直し、列を読み出し順に埋め戻し、行をまたいで読みます。

不完全列と完全列

ほとんどのメッセージはグリッドにきれいに割り切れないので、最後の行は短くなります。不完全 (incomplete) の形式 — 古典的な教科書どおりの縦列転置 — では、それらのマスを単に空のままにします。すると列の長さは一つ分だけ異なり、暗号文は元のメッセージとちょうど同じ長さになります。このツールの不完全モードはこれを行い、テキストを完全に往復させます: 復号すると、スペースや句読点を含めて、入力したものがそのまま正確に返ってきます。

完全の形式では、代わりにメッセージを最後の行を埋めるまでパディングするので、すべての列が同じ長さになり、グリッドは完璧な長方形になります。パディングはふつう、X や Q のような決められた合意済みの文字、またはヌルの並びです。完全列は列の長さを明確にし、これは歴史的に紙と鉛筆の作業を簡単にし、同じグリッドを二度目に転置するときには欠かせません。完全モードに切り替えると、好きな文字でグリッドをパディングできます。すると復号は、テキストに続けて追加されたパディングを返すので、それを切り取って取り除けます。

キーワードの役割

キーワードは二つの仕事を同時にこなします: その長さがグリッドの列数を決め、その文字のアルファベット順の並びが列を読む順序を決めます。長いキーワードはより幅広く背の低いグリッドと、より徹底した並べ替えを作ります。文字がすでにアルファベット順に近いキーワードはほとんど何も並べ替えないので、よく混ざったキーワードの方が強くなります。重要なのは文字の相対的な順序だけであり、だからこそあるキーワードと、同じ文字の並びを持つどんな単語も同じ転置を生み出します。

キーワードがすべての秘密なので、送り手と受け手はまったく同じものを使わなければなりません。このツールではキーワード中の文字だけが列の順序に数えられ — スペース、数字、句読点は無視されます — 繰り返された文字は左から右の順を保つので、BANANA のようなキーワードでも明確で再現可能な列の並びを与えます。キーワードを変えると暗号文は完全に変わり、一方で同じキーワードは常にそれを元へ復号します。

実例で見る

メッセージ WE ARE DISCOVERED FLEE AT ONCE とキーワード ZEBRAS を取り上げましょう。スペースを取り除くとメッセージは WEAREDISCOVEREDFLEEATONCE で、二十五文字あり、ZEBRAS は六文字なので、これを六列に書きます: 一行目に WEARED、二行目に ISCOVE、三行目に REDFLE、四行目に EATONC、そして E だけを収める最後の短い行です。

さて、キーワードの文字をアルファベット順に並べると — A, B, E, R, S, Z — 列は左から右へ 5, 3, 2, 4, 6, 1 と番号付けされます。その順に列を読むと、A の列から EVLN、B の列から ACDT、E の列から ESEA、R の列から ROFO、S の列から DEEC、そして最後に Z の列から WIREE が得られます。つなぎ合わせると、暗号文は EVLNACDTESEAROFODEECWIREE です。それとキーワード ZEBRAS を復号に与えると、グリッドが組み立て直され、WEAREDISCOVEREDFLEEATONCE が読み戻されます。

縦列転置式メッセージを復号する

復号は暗号化より難しく見えますが、同じグリッドに従います。暗号文の長さとキーワードの列数から、各列がちょうどどれだけ高いかを正確に割り出せます: メッセージがきれいに割り切れない場合、最も左の列 — 各行の最も早い文字を収める列 — が残りより一つ分だけ高くなります。各列の高さがわかれば、暗号文を読み出し順にその列へと切り分け、各列をそのキーワードの位置に落とし戻し、行をまたいで読んでメッセージを復元できます。

必要な唯一の秘密はキーワードです。ほかのすべては暗号文そのものによって定まっています。だからこそこのツールは、追加情報なしに、暗号文とキーワードだけから純粋に復号できます。暗号化に使われたのと同じキーワードを、そしてパディングが関わっていたなら同じモードを使えば、元のメッセージがふたたび現れます — 不完全列ではそのまま正確に戻り、完全列では切り取る準備の整ったパディングとともに戻ります。

歴史と安全性

縦列転置は何世紀も前からあり、二十世紀に入っても長く野戦暗号の主力でした。紙、キーワード、そして安定した手以外には何も必要としないので重宝されたのです。それ単体では安全ではありません: 文字を決して変えないため、暗号文は平文とまったく同じ文字頻度を持ち、暗号解読者は列数を推測してかけらを組み直そうとすることでこれを攻撃できます — アナグラミング (anagramming) と呼ばれる手法です。短いメッセージと使い回されたキーワードは、とりわけ早く陥落します。

その本当の強みは、ほかの手順と組み合わされることから生まれます。転置を二つの異なるキーワードで二度行うこと — 二重転置 (double transposition) — は、何十年もの間、真剣な用途に十分強いと考えられており、転置を換字の上に積み重ねることこそが ADFGVX 暗号を手強いものにしています。今日、縦列転置は教材やパズルとして扱うのが最適です: 文字を並べ替えることがどのようにメッセージを隠すかを、明快に手を動かして示すものだからです。本当の情報を守るには、AES のような現代的で査読を経たアルゴリズムを使い、縦列転置は学習やパズル、キャプチャー・ザ・フラッグのチャレンジのために取っておきましょう。

よくある質問

縦列転置式暗号とは何ですか?
これは、文字を置き換えるのではなく並べ替えることでメッセージを隠す古典的な転置式暗号です。メッセージをキーワードの下に一行ずつグリッドへ書き込み、続いて列をキーワードの文字のアルファベット順に読み戻します。キーワードは共有された秘密です: それを知っている者は誰でも暗号化・復号でき、一方で列の順序はそれ以外の誰にとっても恣意的に見えます。
縦列転置式暗号はどう動きますか?
キーワードをグリッドの上部に一列につき一文字ずつ書き、続いてその下にメッセージを一行ずつ埋めます。キーワードの文字をアルファベット順に並べて列に番号を振り、続いてその番号順にグリッドを一列ずつ読みます。読み出した文字をつなぎ合わせたものが暗号文です。復号は同じグリッドを組み立て直し、行をまたいで読みます。
完全列と不完全列の違いは何ですか?
不完全 (incomplete) 列は、メッセージがグリッドをきれいに埋めないとき最後の行を短いまま残すので、列の長さは一つ分だけ異なることがあり、暗号文はメッセージと同じ長さになります。完全列は選んだ文字でメッセージを完璧な長方形までパディングするので、すべての列が同じ長さになります。このツールは両方に対応します。不完全はテキストをそのまま正確に往復させ、一方で完全は追加したパディングとともに返します。
縦列転置の例を見せてもらえますか?
WEAREDISCOVEREDFLEEATONCE をキーワード ZEBRAS で取り上げます。六列に書くと WEARED、ISCOVE、REDFLE、EATONC、そして E のある短い行となります。ZEBRAS をアルファベット順に A, B, E, R, S, Z と並べ、その順に列を読むと EVLN、ACDT、ESEA、ROFO、DEEC、WIREE となり — つまり暗号文は EVLNACDTESEAROFODEECWIREE です。キーワード ZEBRAS でそのまま元へ復号できます。
縦列転置式暗号はどうやって復号しますか?
暗号文の長さとキーワードの列数から、各列がどれだけ高いかを割り出します — メッセージがきれいに割り切れないとき、最も左の列が一文字分だけ高くなります。暗号文をキーワードの読み出し順に列へと切り分け、各列をそのキーワードの位置に戻し、行をまたいで読みます。このツールでは復号を選び、暗号化に使われたのと同じキーワードを入力してください。
キーワードは何をしますか?
キーワードは二つのことをします: その長さが列数を定め、その文字のアルファベット順が列を読む順序を定めます。重要なのは文字の相対的な並びだけなので、同じ文字の順序を持つ任意の二つのキーワードは同じ転置を生み出します。長く、よく混ざったキーワードは、短いものよりメッセージを徹底的にかき混ぜます。
キーワードに繰り返された文字があるとどうなりますか?
繰り返された文字は、キーワードの中で現れる順に左から右へ読まれます。なので BANANA のようなキーワードでも明確な列の順序を与えます: 三つの A の列がその左から右の順で最初に読まれ、続いて B の列、続いて二つの N の列です。このツールはこの慣例に従うので、重複のあるキーワードも完全に使え、常に正しく元へ復号できます。
この暗号はスペースや句読点を保持しますか?
はい。転置は文字を並べ替えるだけなので、このツールは入力したすべての文字 — 文字、数字、スペース、句読点、絵文字さえも — を移動させるので、暗号文はまったく同じ文字の並べ替えになります。ただしキーワードでは、列の順序に数えられるのは文字だけであり、キーワード中のスペースやその他の文字は無視されます。
パディング文字は何のためのものですか?
パディングは完全モードでのみ使われ、そこではグリッドが完璧な長方形まで埋められ、すべての列が同じ長さになります。パディング文字 — 既定では X ですが、変更できます — が最後の行の空のマスを埋めます。完全列のメッセージを復号すると、パディングはテキストの末尾に戻ってくるので、簡単に切り取れます。
二重転置とは何ですか?
二重転置 (double transposition) は縦列転置を二度、ふつうは二つの異なるキーワードで行うので、一度目のパスの出力が二度目の入力になります。これは単一の転置を攻撃しやすくしている規則的な列の構造を崩し、何十年もの間、真剣な野戦での使用に十分強いと考えられていました。ここでは一度暗号化し、続いてその結果を二つ目のキーワードでもう一度暗号化することで再現できます。
縦列転置式暗号はどれほど安全ですか?
それ単体では安全ではありません。文字を決して変えないため、暗号文は平文と同じ文字頻度を持ち、アナグラミング — 列数を推測してグリッドを組み直すこと — によって、とりわけ短いメッセージや使い回されたキーワードでは破られかねません。二重転置や ADFGVX 暗号のように、ほかの手順と組み合わされると、はるかに強くなります。本当の保護には AES のような現代的なアルゴリズムを使い、この暗号は学習やパズルのために取っておきましょう。
入力したテキストはサーバーに送信されますか?
いいえ。すべての暗号化と復号はブラウザ内だけで実行されるため、入力したテキストがアップロード・記録・保存されることはありません。共有リンクでさえ、テキストとキーワードを URL のハッシュ以降の部分に保持しますが、ブラウザはこの部分をサーバーに決して送信しないため、自分でリンクを共有するまでメッセージは非公開のまま保たれます。

関連ツール

こちらの便利なツールもどうぞ

レールフェンス暗号

スキュタレー暗号

シーザー暗号

ヴィジュネル暗号

アトバシュ暗号

プレイフェア暗号