ADFGVX暗号
文字と数字を扱えるドイツの6×6の野戦暗号で、暗号化と復号ができます。ATTACKAT1200は、表のキーワードPRIVACYと並べ替えの鍵GERMANでGFVVVVVVAAAVGXGFGFGFGAGVになります。同じ2つの鍵で元に戻せます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- ATTACKAT1200
- 方陣キー
- PRIVACY
- Key
- GERMAN
- 計算モード
- Encrypt
- 結果
- GFVVVVVVAAAVGXGFGFGFGAGV
- 入力
- ATTACKAT1200
- 使用した鍵の方陣
- PRIVACY
- 正規化値
- ATTACKAT1200
ADFGVX暗号は、鍵付きポリュビオス式正方形でメッセージを分割し、続けて第二の転置キーワードでラベル列を並べ替える、ドイツ軍の六×六野戦暗号です。単純な換字や純粋な柱転置とは異なり、ADFGVXは両段階を組み合わせ、平文の各文字または数字がA・D・F・G・V・Xのラベル対になったうえで格子に書き込まれ、キーワード順に読み出されます。本機能は正方形キーワード、転置鍵、保護または復元したいテキスト、暗号化または復号のモードを受け付けます。
6×6正方形と分割の仕組み
ADFGVXは、正方形キーワードをラテン文字AからZと十進数字0から9からなる三十六記号の上に、六×六の行列へ変換するところから始まります。正方形キーワードの文字と数字は左から右・上から下に書き、重複を除き文字は大文字化し、アルファベットと数字集合の残りの未使用記号が自然順で格子の残りを埋めます。
行と列は一から六の数字ではなく、モールスに区別しやすい六文字A・D・F・G・V・Xでラベル付けされます。暗号化では平文を大文字英数字のみに正規化し、各記号をそのセルの二つのラベル(行ラベル、続けて列ラベル)に置き換え、正規化メッセージの二倍長の連続ストリームを生成します。その分割ストリームが第二段階の入力です。
復号では転置を逆にしたあと、連続する各ADFGVXラベル対を同じ正方形で参照し、一文字または一数字を復元します。写像は正方形キーワードに完全に依存するため、両方の鍵と同一の正規化規則を共有する二者は往復後に同じ記号列を得ます。
実用のヒント・制限・関連検索
行列がほぼアルファベット順にならないよう、複数の異なる文字と任意の数字を含む正方形キーワードを選んでください。短い覚えやすい語でもデモには足りますが、固有記号の多い長い句の方が正方形をより混ぜます。列順が左から右の恒等にならないよう、文字の混ざった転置鍵を選びます。
繰り返し文字は許可され、位置で同点を解消します。暗号化前に空白・句読点・その他の非英数字は除去されるため、電話番号は数字は残りますが区切りは失われ、混在ラベルは記号列から句読点を失います。後で必要なら別途分割または符号化してください。
復号では正規化後に偶数長のADFGVXのみの暗号文ストリームを渡します。印刷ワークシートに空白が残っていても、ソルバはラベル以外を無視します。往復確認が最良の健全性テストです。
数字を含む句を暗号化し、同じ二つの鍵で復号し、正規化英数字平文と比較します。教材では例を組み合わせます。本ランディングはADFGVX暗号・ADFGVX暗号化ツール・六×六分割転置ツールをオンラインで探す人向けであり、AESでも現代のパスワード保管庫でも、Playfairでも単純ポリュビオスでも、柱転置単体でもありません。
教育やパズル向けに透明な古典ADFGVX暗号が必要なときは本機能を選び、実秘匿が必要なら現代の認証付き暗号を使ってください。
活用例
CTFとパズルのwrite-up
出題者は公開された正方形鍵と転置鍵について、別のオフラインスクリプトを保守せずにADFGVXの暗号化・復号手順を検証できます。
歴史的暗号のデモ
博物館やブログのデモは、時刻や部隊番号を含む来場者の句をその場で暗号化し、第一次世界大戦の分割暗号が単一アルファベット換字とどう違うかを示します。
よくある質問
ADFGVX暗号とは何ですか?
古典的なドイツ野戦暗号です。各文字または数字を6×6キーワード正方形でA/D/F/G/V/Xのラベル対に写像し、続けてラベル列を柱転置鍵で並べ替えます。
なぜ六つのラベルA、D、F、G、V、Xなのですか?
これら六文字はモールス符号のパターンが互いに異なり、無線電信で分割暗号文を送るときの野外伝送誤りを減らしました。
鍵が欠落または空のときはどうなりますか?
正方形キーワードと転置鍵の両方が必須で空であってはなりません(正方形鍵にはA–Zまたは0–9が少なくとも一つ必要です)。
ADFGVXは数字に対応しますか?
はい。 6×6正方形は二十六文字と十数字を収めるため、ATTACKAT1200のような文を時刻の数字を落とさずに暗号化できます。
ADFGVXのキーワードはどう選べばよいですか?
表のキーワードには、異なる文字が多く、数字も入った言葉を選ぶと、表がアルファベット順に近くなりません。並べ替えの鍵も文字を混ぜて選びます。同じ文字が重なっても使え、その場合は位置の順で並びます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/adfgvx \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"ATTACKAT1200","square_key":"PRIVACY","key":"GERMAN"}'const res = await fetch("https://api.kit.forhosting.com/enc/adfgvx", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "ATTACKAT1200",
"square_key": "PRIVACY",
"key": "GERMAN"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/adfgvx",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "ATTACKAT1200",
"square_key": "PRIVACY",
"key": "GERMAN"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/adfgvx", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"ATTACKAT1200","square_key":"PRIVACY","key":"GERMAN"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"ATTACKAT1200","square_key":"PRIVACY","key":"GERMAN"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/adfgvx", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "ATTACKAT1200",
"square_key": "PRIVACY",
"key": "GERMAN"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.adfgvx",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
欠落または空の鍵は明確なinvalid_inputエラーで報告し、空フォームが無意味な恒等変換を黙って返さないようにします。処理は純粋で決定的な文字演算であり、ネットワークも乱数シードも時計依存もなく、無料のブラウザ実行器とプリペイドAPIは、正方形・分割ストリーム・列順を含む同一のJSONを、教育・CTFのwrite-up・歴史的暗号演習のために呼び出すたびに返します。
転置鍵・APIフィールド・応答の仕組み
分割のあと、ラベル列は転置鍵の長さを幅とする格子に行優先で書き込まれます。列は鍵文字をUnicode順に並べた順序で読み出され、同じ文字が繰り返すときは元の左から右の索引が安定した同点解消になります。復号はその逆で、暗号文ラベルをストリーム長に応じた各列の高さでキーワード順に列へ詰め、格子を左から右・上から下に読みます。テキストは正規化後に使える記号を生む必要があります(暗号化では英数字、復号ではADFGVXラベル)。必須の文字列フィールドtext・square_key・keyの三つと、省略時はencryptになる任意のmodeを含むJSON本体を送ってください。textの別名はinput・value・data・message・plaintext・ciphertext、square_keyはsquare_keyword・polybius_key・keyword・square、keyはtransposition_key・column_key・tkey・colkey、modeはoperation・op・direction・actionを受け付け、encodeやdecodeなどの同義語も認識します。鍵が欠落または空ならinvalid_inputで課金されません。成功時の応答は元のtextと鍵を返し、square_key_usedを埋め順の重複除去済み正方形キーワード記号、modeをencryptまたはdecrypt、normalizedとfractionatedの中間列、resultとtextを暗号文ラベルまたは復元記号、squareを六行六セル、labelsを固定ADFGVX集合、column_orderを列索引の置換、lengthとfractionated_length、formulaを短い規則の覚え方、messageを一行要約として報告します。料金は成功リクエストごとに固定の$0.002、単位はitemです。
実用のヒント・制限・関連検索
Workerメモリを抑えるため、ペイロードは公開上限の十万文字未満に保ってください。PRIVACYのような古典的正方形キーワードと転置GERMANの混在文で分割と列並べ替えを示し、短いCODE42デモで数字セルを示し、空の転置鍵で鍵欠落を報告する厳しいinvalid_input経路を示します。invalid_inputを返す失敗タスクはプリペイド残高を消費しないため、空鍵を試す探索スクリプトのコストを抑えられます。
連携の活用例
教室の古典暗号ラボ
学習者は手作業で6×6のADFGVX正方形を作り、短い英数字混在文を分割し、転置鍵を適用したうえで、ラベルと最終ストリームを決定的なAPI結果と比較します。
技術的な質問
ADFGVX暗号は無料ですか?
ブラウザツールは無料でローカル実行です。API呼び出しは成功リクエストごとに$0.002のKITプリペイド残高を使い、失敗タスクは課金されません。