ADFGX暗号
第一次世界大戦のADFGX暗号を使えます。各文字をA、D、F、G、Xの2文字の組に変え、列を並べ替えます。鍵NAVALとCARGOなら、ATTACKATONCEはDAFFAAXFXDXDDAFGAGAGDAXDになります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- ATTACKATONCE
- 方陣キー
- NAVAL
- Key
- CARGO
- 計算モード
- Encrypt
- 結果
- DAFFAAXFXDXDDAFGAGAGDAXD
- 長さ
- 24
- 対応付けた文字
- 12
- 分割後の長さ
- 24
このADFGX暗号ツールは、鍵付き5×5ポリビウス方陣と第二段の柱状転置を組み合わせた、第一次世界大戦期のドイツ古典方式でテキストを暗号化または復号します。メッセージ、ポリビウス格子を埋める方陣キーワード、列順を決める転置鍵、および任意のモードを指定します。暗号化では各ラテン文字がラベルA・D・F・G・Xのダイグラフに対応し、その記号列が転置キーワードの下で並べ替えられます。復号では先に列順を戻し、同じ方陣でダイグラフを文字に戻すため、既知の鍵の組で元の文字が復元されます。IとJは同一マスを共有し、暗号化時は非文字をスキップし、復号時はADFGX記号のみを読み取り、教科書やCTFの慣例に合わせます。
ADFGX暗号とは何か、このツールが返すもの
ADFGXは、行と列が数字1〜5ではなくモールスに適した文字A・D・F・G・Xでラベル付けされた5×5ポリビウス方陣で各文字をフラクショネートする古典的な野外暗号です。方陣は鍵付きで、方陣キーワードの重複しない文字が出現順に先に書かれ、残りのアルファベットが格子を埋め、IとJは1マス共有に固定されて25マスでA–Zを覆います。
暗号化は各ラテン文字を行と列の2ラベル・ダイグラフに置き換え、文字数の2倍の長さのADFGX記号だけのストリームを作ります。そのストリームは転置鍵長を幅とする格子に行方向に書き込まれ、鍵文字のソート順(同じ文字が繰り返すときは左からのインデックスで安定に同点決着)で列ごとに読み出されます。
復号は全長と鍵幅から導く同じ列高さでレイアウトを逆にし、復元したダイグラフ列を対にして方陣で照合します。本ページは常にこの固定契約を適用し、ADFGVX・ビフィド・純粋ポリビウス・転置のみの暗号へ黙って切り替えることはありません。
授業・パズル・テストフィクスチャでのADFGXの位置づけ
開発者と教育者は、キャプチャ・ザ・フラッグのウォームアップ、第一次世界大戦の野外暗号に関する教科書の章、フラクショネーションと転置が単純換字よりハードルを上げた理由を示すデモでADFGX暗号に出会います(現代の暗号解析に対しては安全ではありません)。
フロントエンドチームは独自アルファベットを発明せずにスクリーンショット用の例文を並べ替え、同じ方陣鍵と転置鍵でdecryptして復元できます。
品質エンジニアは契約テスト用に決定論的な暗号化・復号ペアを生成し、ADFGX対応を謳うミドルウェアがビフィド・フラクショネーションへ黙って切り替わったり、転置段階を落としたり、A D F G Xの代わりに数字ラベルを強制したりできないようにします。
コンテスト主催者は、大文字のみ出力や未要求のパディングを押し付ける不透明なWeb玩具に頼らず、控えめな英語句の解答鍵を事前計算できます。製品・教育ツールは、学習者が暗号文を貼り、UIが文書化されたキーワード下で復元平文を示すときにこの変換を使います。
無料で決定論的なテキストツールの小さなラボを組むときは他の古典エンコード補助と組み合わせ、本物の秘密にはAES-GCMなどの現代の認証付き暗号の代わりにADFGXを使わないでください。
活用例
CTFと古典暗号の練習
方陣キーワードと転置キーワードでADFGXメッセージを暗号化・復号し、パズル・授業・キャプチャ・ザ・フラッグのウォームアップに使います。
暗号史の授業
第一次世界大戦のADFGXフラクショネーションをA/D/F/G/Xラベル、I/J共有、強制パディングなしの柱状転置で示します。
よくある質問
ADFGXは単純ポリビウスや柱状転置と何が違いますか?
ADFGXは鍵付き方陣で文字をA/D/F/G/Xダイグラフにフラクショネートし、第二キーワードで柱状転置します。単純ポリビウスは数字(またはラベル)対で止まり、柱状のみはフラクショネーションなしで文字を並べ替えるだけです。
ADFGXは本物の秘密に安全ですか?
いいえ。 第一次世界大戦の古典的な教材用暗号です。本当の機密にはAES-GCMなどの現代の認証付き暗号を使ってください。
ADFGXの暗号文はどう復号しますか?
復号を選び、暗号化のときと同じ2つの鍵を指定します。まず列の並べ替えを元に戻し、次に2文字の組を同じ方陣で引いて文字に戻します。A、D、F、G、X以外の文字は無視されます。
方陣でIとJが同じマスなのはなぜですか?
5×5の方陣には二十五マスしかなく、二十六文字を入れられないためです。IとJを1つのマスにまとめてアルファベット全体を収めるので、暗号化したJは復号するとIとして戻ります。
暗号文が元の文の2倍の長さになるのはなぜですか?
1文字ごとに、方陣の行と列を表す2文字の組に置き換わるためです。12文字の文は24文字になり、列の並べ替えは順番を変えるだけで、文字の数は変えません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/adfgx \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"ATTACKATONCE","square_key":"NAVAL","key":"CARGO"}'const res = await fetch("https://api.kit.forhosting.com/enc/adfgx", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "ATTACKATONCE",
"square_key": "NAVAL",
"key": "CARGO"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/adfgx",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "ATTACKATONCE",
"square_key": "NAVAL",
"key": "CARGO"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/adfgx", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"ATTACKATONCE","square_key":"NAVAL","key":"CARGO"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"ATTACKATONCE","square_key":"NAVAL","key":"CARGO"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/adfgx", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "ATTACKATONCE",
"square_key": "NAVAL",
"key": "CARGO"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.adfgx",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
暗号史の授業・パズル設計・可逆ラボデモにはブラウザで無料で使え、フラクショネーションと格子詰めを自前実装せず再現可能なADFGX変換が必要なパイプラインでは、成功リクエストあたり$0.002でAPIを呼び出してください。
ADFGX暗号とは何か、このツールが返すもの
JSON応答には暗号文または復元平文のresult、encryptまたはdecryptのmode、指定したキーワードをエコーするsquare_keyとkey、ダイグラフ段階のletters_mappedとfractionated_length、転置段階のkey_lengthとcolumn_order、方陣の25文字埋めのalphabet、固定のlabels(ADFGX)とcipher(adfgx)、二段階契約を文書とテスト向けに述べるformula文字列が含まれます。ストリーミング経路もVigenèreや現代AESへの黙ったフォールバックもなく、文書化された規則でテキストと両方の鍵を渡すか、invalid_inputで失敗するかです。単なるポリビウス数字写像だけ、柱状並べ替えだけ、あるいは認証付き現代暗号が必要な場合は専用エンドポイントを使い、本ランディングは暗号史の章やCTFウォームアップが既に述べる複合ADFGXワークフローに答えます。
text・square_key・key・modeの読み方と結果が再現可能である理由
modeは省略時encryptで、enc・encode・e(暗号化)やdec・decode・d(復号)の短い別名も受け、それ以外は検証失敗です。列順は転置鍵から一度計算し、同じ高さ公式を暗号化と復号で使うため、その2つのキーワード下でラテン文字を含む任意メッセージはラウンドトリップで常に元の文字に戻ります。優先ペイロード欄はメッセージのtext、ポリビウス用のsquare_key、転置用のkey、暗号化または復号の任意modeです。textはinput・value・s・message・plaintext・ciphertextなどの別名を受け、フォームやSDKクライアントが毎回の呼び出し先を改名せず既存列名を再利用できます。square_keyはsquare_keyword・polybius_key・squareを受け、大文字小文字正規化後に少なくとも1つのラテン文字が必要で、なければエンジンは空のsquare_keyを示す明確なメッセージ付きのinvalid_inputを投げます。keyはtransposition_key・keyword・k・password・passphraseを受け、空でない文字列全体が列を定義し、数字や記号を含めてもよく、順序は文字比較(ラテン文字は大小無視ソート、繰り返しは左インデックスで安定同点)です。空の転置鍵はinvalid_inputで拒否されます。text欠落、鍵欠落、非文字列型、暗号化時に文字のない平文、ADFGX記号のない暗号文、転置解除後の奇数長ダイグラフ列はすべてinvalid_inputとなり、空フォームが成功した無操作に見えないようにします。同一のADFGX変換を自動化パイプラインに入れるときは、本ページの無料ブラウザ実行と有料APIを組み合わせ、ダイグラフ・フラクショネーションを自前実装せずに済みます。無効入力はinvalid_inputを返し課金されず、検証は安価なまま、成功変換は固定のアイテム価格$0.002です。
授業・パズル・テストフィクスチャでのADFGXの位置づけ
バックエンドはパズルAPIや、学習者が次の段階のために方陣と格子を再構築する教育サンドボックス向けに短い挑戦文字列を符号化します。本ページでは処理はすべてブラウザ内で走り、API経由では成功ルックアップごとに$0.002、検証失敗は課金されず、応答後に何も保存しません。無料の対話的探索と同一内容の有料APIという分割はKITティアAカタログの他項目と一致し、授業デモから自動化パイプラインへ暗号文を変えずに移れます。
連携の活用例
決定論的CIフィクスチャ
単体テスト・ゴールデンファイル・契約チェック用に再現可能なADFGX暗号文と平文のペアを生成します。
技術的な質問
ADFGX暗号ツールの料金は?
本ページではブラウザ内で無料です。API経由の成功リクエストは$0.002で、無効入力は課金されません。
ADFGX暗号文をどう復号しますか?
暗号文をtext、同じsquare_keyと転置keyを送り、modeをdecrypt(またはdec・decode・d)にします。mode省略時は暗号化が既定です。
square_keyが空だとどうなりますか?
リクエストはinvalid_inputで失敗します。エンジンが5×5格子を埋めるには、ポリビウス方陣キーワードにラテン文字A–Zが少なくとも1つ必要です。