シーザー暗号エンコーダー
シーザー暗号は、すべての文字を固定数だけずらす方式です。+3シフトならAはD、BはEになり、Zの次はAへ回り込みます。私信にシフト3を使ったとされるユリウス・カエサルにちなんで名付けられた、最も単純な換字式暗号です。今でもパズル、授業のデモ、古典的なROT13のUsenet慣習に役立ちます。テキストを貼り付け、シフトを選び、エンコードまたはデコードしてください。
シーザー暗号の仕組み
-
1
平文または暗号文を入力
任意の英語テキストを入力します。文字以外(数字、句読点、スペース)は変わりません。大文字小文字も保持されます。
-
2
シフト値を選ぶ
1-25の任意の整数を指定します。シフト13はROT13で、自分自身の逆変換です。古典的なシーザー暗号は3を使いました。
-
3
方向を選ぶ
エンコードは前方向にシフトし、デコードは後方向にシフトします。シフトKでの復号は、シフト26-Kでのエンコードと同じです。
-
4
結果を確認
暗号文(または復号された平文)がすぐに表示されます。ワンクリックでコピーできます。
シーザーシフトの見え方
アルファベットに3のシフトを適用した例:
Plain: 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
Cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
例: HELLOをシフト3で変換するとKHOOR。KHOORをシフト3で復号(またはシフト23でエンコード)するとHELLOに戻ります。
ROT13 — 自己逆変換のシフト
ROT13はシフト13を使います。2回適用すると元のテキストに戻ります: HELLO → URYYB → HELLO。そのため1980年代のUsenet投稿でネタバレを隠すのに最適でした。1つの変換でエンコードもデコードもでき、覚える鍵もありません。
セキュリティ(ほぼない)
シーザー暗号は現代の分析に対して意図的に破れているようなものです。
- 総当たり攻撃: 可能なシフトは25通りだけです。すべて試し、英語として読めるものを選べます。
- 頻度分析: シフト後のテキストでも文字頻度は保たれます。英語では
Eが最頻出なので、暗号文で最も多い文字はEをシフトしたものの可能性が高いです。 - 既知平文攻撃: 元の文字を1つでも知っていれば、シフトがわかります。
守る必要があるものには使わないでください。教育用であって、実用的な暗号ではありません。
変種と拡張
- ROT5: 数字(0-9)だけをシフトします。ROT18でROT13と併用されます。
- ROT47: 表示可能なASCII 94文字をシフトします。ROT13と同じく自己逆変換です。
- Vigenère: キーワードを使い、位置ごとに異なるシフトを使うシーザー暗号です。はるかに破りにくくなります。
- Atbash: A↔Z、B↔Yという具合に入れ替えます。ヘブライ語での歴史的利用に対する固定シフトの親戚です。
授業での利用
シーザー暗号は暗号学入門の定番です。重い数学なしで、剰余演算、換字、頻度分析、鍵という概念を紹介できます。多くのCTFの「初級暗号」課題の答えにもなります。
よくある質問
スエトニウスは、カエサルが通信にシフト3を使ったと記録しています。アウグストゥスは資料によって異なりますが、シフト1(A → B、B → C、Z → AまたはAA)を使ったとされています。
いいえ。古典的なシーザー暗号は26文字のローマ字アルファベットで定義されます。アクセント付き文字(é、ñ、ü)は変わらず通過します。複数アルファベットの暗号には、現代的な換字方式が必要です。
便利だからです。ネタバレ、パズルの答え、軽い不適切語フィルターのようなテキストを気軽に隠せて、復号も非常に簡単です。セキュリティ目的ではなく、軽い難読化のためのものです。
はい、簡単です。25通りのシフトをすべて試し、読める英語を探します。長い暗号文(20文字以上)ではほぼ一意に決まりますが、ごく短い暗号文では複数のもっともらしいシフトがあり得ます。
関連ツール
AES暗号化 / 復号
OpenSSLのAES暗号方式で低リスクのテキストを暗号化・復号します。パスフレーズはSHA-256でハッシュされ、Base64出力はIVと暗号文です。
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
A1Z26暗号エンコーダー
A1Z26暗号(A=1、B=2、... Z=26)でテキストをエンコード、または数字列を文字へデコードできます。区切り文字も選べます。
bcryptジェネレーター
平文パスワードからbcrypt hashを生成します。cost factorは4から14まで調整でき、Laravel、Django、Node、PHPと互換性があります。
Base32エンコーダー・デコーダー
RFC 4648アルファベットでBase32文字列をエンコード・デコードします。TOTPシークレット、大文字小文字を区別しないトークン、人が入力する識別子に便利です。
Base85エンコーダー・デコーダー
Adobe Ascii85(PostScript/PDF)またはZ85(ZeroMQ)形式でBase85をエンコード・デコードします。バイナリデータではBase64よりコンパクトです。