Digrafid暗号
2つのキーワードでドラステルのDigrafid暗号を使えます。DCODEをキーKEYWORDとSECRET、周期3で暗号化するとLTYDK#になり、同じキーと周期で埋め字ごと元の文字に戻せます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- DCODE
- Key1
- KEYWORD
- Key2
- SECRET
- 計算モード
- Encrypt
- 周期
- 3
- 結果
- LTYDK#
- 長さ
- 6
- 対応付けた文字
- 5
- パディング済み
- 1
Digrafid暗号は、Félix Delastelle が考案した古典的な二重字(ダイグラフ)分画方式です。二十七記号の鍵付きアルファベットを二つ独立に用い—ラテン文字 A から Z にヌル記号のハッシュを加えたもの—を、三行九列と九行三列の相補格子に配置し、固定の三行三列数値ブリッジで結びます。平文は文字の対に分割され、各対は三桁の座標三つ組になり、選んだ周期ごとに積み上げて Trifid と同様に列方向へ再読し、新しい三つ組を暗号文のダイグラフへ戻します。メッセージ、両方のキーワード、任意の周期、暗号化または復号のモードを指定します。
二つの鍵付きアルファベットによる Digrafid ダイグラフ分画の仕組み
Digrafid は、キーワードから二十七記号のアルファベットを二つ構築することから始まります。key1 の一意なラテン文字と任意のハッシュがまず横方向の三行九列格子を埋め、残りの A–Z とハッシュが自然順で格子を完成させます。key2 は縦方向の九行三列格子に同じことを行います。
第三の三行三列数値ブリッジは常に一から九までの数字を行優先で保持し、鍵には依存しません。暗号化は文字列を二記号ずつのダイグラフに分割します。先頭文字 L1・次文字 L2 のダイグラフでは、横格子での L1 の列、L1 の行と L2 の列の交点にあるブリッジ数字、縦格子での L2 の行を記録し、三桁の三つ組を作ります。
周期分のダイグラフが三つ組を三桁の連続行として書き、ブロックを列方向に読み直して新しい三桁三つ組へ再編成します。各新しい三つ組は逆変換され、中央の数字がブリッジ上の行と列を決め、最初の数字とそのブリッジ行で横格子の文字を、第三の数字とそのブリッジ列で縦格子の文字を選び、一つの暗号ダイグラフを得ます。メッセージ全体を処理するまでブロックが続きます。
文字数が周期の二倍の倍数でない場合、エンジンはハッシュで埋め、各ブロックを完成させます。復号は同じ鍵と周期による同じ対合変換なので、もう一度適用するとパディングを含む元の文字列が戻ります。
本ページは、鍵付き二十七記号アルファベット二つによる古典的な周期付き Digrafid のみを実装し、Bifid、Trifid、four-square、未知鍵の自動暗号解析は対象外です。
実務で Digrafid ツールが使われる場面
暗号入門や暗号史の授業では、学生がダイグラフ座標を練習し、周期ブロックをまたぐ分画が plain two-square や Playfair のダイグラフ写像とどう暗号文を変えるかを見るために Digrafid 演習を出します。二つの鍵付きアルファベットで暗号化・復号する一つの信頼できるオラクルは、宿題デモと自動採点を速めます。
CTF 課題や American Cryptogram Association 風のパズルは、今も二つの短いキーワードと周期の後ろに Digrafid 文を隠し、解く側は汎用暗号解析スイートではなく、速く予測可能な Delastelle 実装を求めます。
サポートやコンテンツのチームは、共有のキーワード対でスポイラー、クイズ解答、内部ラベルを軽く符号化し、言語別の暗号ライブラリを入れずに逆変換したい場合があります。
単一正方形の Bifid 分画、三座標の Trifid 立方体、分画なしの four-square ダイグラフ置換、Playfair キーワード正方形、未知鍵の自動頻度解析が必要な場合は、この古典 Digrafid ページを過負荷にせず、別の検索意図とランディングとして扱ってください。
活用例
授業向け Digrafid とダイグラフ分画デモ
共有する二つのキーワードでサンプルダイグラフを暗号化・復号し、入門授業が 3×9 / 9×3 格子と周期分画を一つの正解オラクルで示せるようにします。
パズルと CTF の Digrafid 課題
問題セットと周期ごとに使い捨てスクリプトを書かずに、課題文字列向けの Delastelle Digrafid 暗号文を符号化または逆変換します。
よくある質問
Digrafid 暗号とは何ですか?
Félix Delastelle による古典的なダイグラフ分画暗号で、二つの鍵付きアルファベット(A–Z と '#' の 3×9 と 9×3)と 3×3 数値ブリッジを用います。ダイグラフは座標三つ組になり、周期で分画されて文字対へ戻されます。
Digrafid 暗号文をどう復号しますか?
変換は対合なので、同じ処理で元の文字列(パディングの '#' を含む)が戻ります。
Bifid や four-square とどう違いますか?
Bifid は一つの 5×5 Polybius 正方形で単文字を分画します。four-square は四つの 5×5 でダイグラフを置換し、座標分画はありません。Digrafid は数値ブリッジと周期ブロックを持つ二つの 27 記号アルファベットでダイグラフ座標を分画します。
Digrafid暗号の周期とは何ですか?
何組の2文字を1つのブロックにまとめてから、数字を列ごとに読み直すかを決める値です。2から10まで選べ、指定しなければ3、つまり6文字ずつのブロックになります。復号にも同じ周期が必要です。
暗号文の最後に#が付くのはなぜですか?
文字数が最後のブロックを満たさないとき、#で埋めてブロックをそろえるためです。DCODEは5文字なので、周期3では#が1つ加わり、LTYDK#になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/digrafid \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"DCODE","key1":"KEYWORD","key2":"SECRET"}'const res = await fetch("https://api.kit.forhosting.com/enc/digrafid", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "DCODE",
"key1": "KEYWORD",
"key2": "SECRET"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/digrafid",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "DCODE",
"key1": "KEYWORD",
"key2": "SECRET"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/digrafid", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"DCODE","key1":"KEYWORD","key2":"SECRET"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"DCODE","key1":"KEYWORD","key2":"SECRET"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/digrafid", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "DCODE",
"key1": "KEYWORD",
"key2": "SECRET"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.digrafid",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空の鍵、文字を含まない鍵、A–Z もハッシュもない本文は invalid_input と明確な英語メッセージで失敗します。無料のブラウザツールと有料 API は同一の純同型関数を共有するため、授業デモ、CTF のウォームアップ、自動パイプラインは、同じ本文・鍵・周期で常に一致します。
二つの鍵付きアルファベットによる Digrafid ダイグラフ分画の仕組み
乱数パッドも時刻印もネットワーク呼び出しもなく—同一入力は常に同一の JSON になります。
送信する内容と返却される内容
mode を省略すると既定は encrypt、period を省略すると古典的既定の三ダイグラフ(多くの教科書例と同じ六文字ブロック)になります。検証失敗は前払い残高を消費しません。必須の文字列フィールド text、横・縦アルファベット用の必須文字列 key1 と key2、encrypt または decrypt の任意 mode、分画ブロックあたりのダイグラフ数として二から十の任意整数 period を送ります。各鍵は正規化後にラテン文字 A–Z またはハッシュを少なくとも一つ含む必要があり、空文字、空白のみ、数字と句読点のみは invalid_input と、どの鍵が空かを示すメッセージで失敗します。成功時は mode、text、key1、key2、period をエコーし、パディング用ハッシュを含む大文字変換後のダイグラフ列 result、その length、パディング前に参加した入力記号数 letters_mapped、追加したハッシュ数 padded、実行に使った二十七文字の alphabet1 と alphabet2、プロファイル確認用の cipher 値 digrafid を返します。text や鍵の欠落、それらのフィールドへの非文字列オブジェクト、未対応の mode、範囲外の period、文書化された上限を超える文字列、文字もハッシュもないペイロードはすべて invalid_input と明確な英語メッセージで失敗します。古典的な確認には、平易なアルファベットと周期三で DCODE を安定暗号文 MOLGAZ に暗号化すること、同じ鍵でその暗号文をパディング付き形へ戻すこと、空の key1 または key2 が既定アルファベットを捏造せず拒否されることが含まれます。成功した API 呼び出しの料金は、項目あたり公開ベースの $0.002 です。
実務で Digrafid ツールが使われる場面
本能力は純粋な parse エンジンのため、API 料金は成功項目あたり公開ベースの $0.002 であり、検証失敗は残高を消費しません。
連携の活用例
二重鍵による軽いラベル符号化
クイズ解答や内部ラベルを Digrafid ダイグラフ列に変換し、同じ鍵と周期で後からブラウザまたは API で復号します。
技術的な質問
なぜ二つの鍵が必要ですか?
key1 が横 3×9 アルファベットを、key2 が縦 9×3 アルファベットを構築します。それぞれにラテン文字または '#' が少なくとも一つ必要で、空または文字なしの鍵は invalid_input で失敗します。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API 要求は前払い KIT 残高を成功項目あたり $0.002 で使い、無効入力は課金されません。