3×3ヒル暗号
鍵を6,24,1,13,16,10,20,17,15にすると、ACTはPOHになります。3文字の組ごとに行列を掛けて26で割った余りを取るため、暗号文の1文字は元の3文字に左右されます。復号用の逆行列も表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- ACT
- Key
- 6,24,1,13,16,10,20,17,15
- 計算モード
- Encrypt
- 結果
- POH
- Det
- 25
- 逆行列式
- 25
- 長さ
- 3
3×3ヒル暗号は Lester S.Hill が考案した古典的な多文字換字で、連続する3文字ブロックに対し3×3整数鍵行列を二十六を法として掛けます。暗号化は平文ベクトルを C が K かける P の mod 26 となる暗号文に写し、復号は行列式が二十六と互いに素なとき K のモジュラ逆行列を掛けます。シーザーや Atbash のような単一アルファベット写像と違い、暗号文の各文字は平文3文字に依存するため、単文字頻度分析が弱まり、剰余環上の線形代数への標準的な導入になります。暗号解析の課題、CTF のウォームアップ、線形代数のデモ、短い数値鍵で可逆なブロック暗号が必要なパズル本などに使われます。本機能は空でないテキスト、行優先の9個の数の鍵、任意の暗号化または復号モードを受け取り、変換後の文字列に加え行列式・逆行列・パディング数・ブロック数を返します。
3×3ヒル写像の仕組みと応答の内容
暗号化は各ラテン文字を0から25の数として扱い、流れを連続する3つ組に分け、各列ベクトルに3×3鍵行列 K を掛け、各座標を二十六を法に還元してから大文字で書き戻します。参加するのは A–Z と a–z のみで、大文字化し、非文字は捨てるため、空白や句読点があってもブロック境界は決定論的です。
文字数が3の倍数でない場合、エンジンは末尾を文字 X で埋めます。これは不完全な最終ブロックに対する古典的な教育上の慣習です。復号は K のモジュラ逆行列(K と逆行列の積が mod 26 の単位行列)を求め、各暗号文3つ組にその逆行列を掛けて平文を復元します。
経路は純モジュラ算術で、ネットワークも乱数シードも壁時計も使いません。
検証規則・可逆行列・よくある落とし穴
決定的な製品規則は、鍵行列が二十六を法として可逆であることです。mod 26 に還元した行列式と二十六の最大公約数が1でなければ、モジュラ逆行列は存在しません。K の det が偶数、または二十六と十三を共有する場合、写像は全単射ではなく復号は不可能です。
ツールは一方向の攪乱を返す代わりに、非可逆鍵行列のメッセージを報告します。本文中の数字・空白・句読点は暗号化されず無視され、ブロック格子を形づくるのは文字列だけです。除去後に文字が残らなければ失敗します。
出力を機密性のための暗号と見なさないでください。小さなモジュラ行列の鍵空間は現代基準では極めて小さく、既知平文攻撃は少数の対応3つ組から K を復元でき、製品ページで Hill をパスワード・トークン・個人データの安全制御として宣伝してはなりません。
検索意図が hill cipher 3x3、行列による Hill の暗号化・復号、3×3 多文字換字であるときは本ランディングを選び、affine や multiplicative は単文字モジュラ写像、Playfair は2文字正方形、Base64 は符号化と役割が違うため別ツールのままにします。
復号時は暗号文を作ったのと同じ9個の鍵数と、同じパディング慣習を使ってください。誤った行列は別の線形写像となり、元の平文と一致しません。成功する暗号化経路と、非可逆行列式エラーの両方を継続的インテグレーションのフィクスチャに固定し、逆行列や行列式の誤変更が気づかれずに出荷されないようにしてください。
3×3版の使いどころと限界
宿題の確認、二十六を法とする行列の講義スライド、CTF 練習、言語ごとにモジュラ行列逆を書かずに行う単発の暗号化・復号には、ブラウザ内の無料 3×3 ヒル暗号を呼び出してください。検証失敗は拒否後に残高を消費しません。
典型的な教室では、単一アルファベット換字が一対一写像であることを示し、固定の可逆行列によるブロック乗算を導入し、手計算で det を求め、互いに素な行列式だけが復号できることを確認します。サポート手順書は、既知の教材鍵で書かれた軽い難読化メモを戻すのに使えます。パズルサイトは答えを事前計算し、mode decrypt でオンデマンド開示できます。
入力テキストは他の KIT parse 項目と同じ保持規則に従い、アルゴリズムはアイソレート間で完全に決定論的なため、結果は継続的インテグレーションのフィクスチャに安全に固定できます。後の授業で別系統の暗号が必要なときだけ頻度分析などと組み合わせ、3×3 ヒルのランディングは9個の数の行列による多文字換字という独自の SEO 意図に留めてください。
活用例
線形代数と暗号解析の宿題
学習者は既知の 3×3 行列で短い句を暗号化し、det と逆行列を mod 26 で計算し、CAS を入れずに同級生の暗号文を復号します。
CTF ウォームアップとパズル本
出題者は9個の数の鍵と Hill 暗号ブロックを渡し、行列が可逆なら mode decrypt で平文を復元します。
パイプラインと CI フィクスチャ
スクリプトと継続的インテグレーション試験は決定論的な Hill 出力と非可逆鍵行列エラーを固定し、逆行列や行列式の不具合を即座に検出します。
よくある質問
Hill の暗号文を復号するには?
暗号文を text に、暗号化時と同じ9個の鍵数、mode decrypt(または decode)を送ってください。鍵が可逆で一致すれば result が復元された文字列です。
鍵行列が可逆でないとどうなりますか?
Hill 写像が全単射になるのは gcd(det(K) mod 26, 26) が 1 のときだけです。
ヒル暗号は安全な暗号化ですか?
いいえ。 Hill はパズルや線形代数の教育向けの古典的多文字換字であり、機密保護用ではありません。パスワードや機微データには絶対に使わないでください。
鍵の9つの数はどの順番で入力しますか?
行ごとに左から右へ入力します。最初の3つが上の行になり、たとえば6,24,1,13,16,10,20,17,15のように並べます。各数は0から25に直され、行列式は26と互いに素である必要があります。
3文字に満たない最後の組はどうなりますか?
文字数が3の倍数でないときは、末尾にXを補って最後の組をそろえます。授業で広く使われている昔ながらの決まりに従っています。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/hill-3x3 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"ACT","key":"6,24,1,13,16,10,20,17,15"}'const res = await fetch("https://api.kit.forhosting.com/enc/hill-3x3", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "ACT",
"key": "6,24,1,13,16,10,20,17,15"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/hill-3x3",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "ACT",
"key": "6,24,1,13,16,10,20,17,15"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/hill-3x3", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"ACT","key":"6,24,1,13,16,10,20,17,15"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"ACT","key":"6,24,1,13,16,10,20,17,15"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/hill-3x3", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "ACT",
"key": "6,24,1,13,16,10,20,17,15"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.hill_3x3",
"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 と非可逆鍵行列の明確なメッセージで失敗します。
3×3ヒル写像の仕組みと応答の内容
必須の文字列フィールド text に空でないメッセージ、必須の key に行優先の整数9個(カンマ区切り文字列、長さ9の平坦配列、または入れ子の3×3配列)、任意の mode(既定は encrypt)を JSON で送ってください。本文の別名は input、value、s、message、plaintext、ciphertext、鍵の別名は matrix、key_matrix、k、key_numbers、モードの別名は op、action、direction、operation です。成功時の応答には大文字の暗号文または平文の result、encrypt または decrypt に正規化した mode、mod 26 に還元した入れ子の key、9要素の key_flat、復号に使う key_inv、行列式と逆元の det と det_inv、元の文字数 length、パディング後の letters_used、padding 数、letters_used を3で割った blocks、形を推測せず分岐できる method(hill_3x3)が含まれます。同一入力は常に同一 JSON を返します。
検証規則・可逆行列・よくある落とし穴
text の欠落、非文字列、空文字列はすべて invalid_input となり、エンジンが拒否した後はプリペイド API で課金されません。整数が9個より少ない/多い鍵、非整数・浮動小数・空トークンも invalid_input です。
API の使い方・料金・教室ワークフロー・実用上の限界
バックエンド、サーバーレス関数、学習プラットフォーム、SDK が残高付きの安定契約を必要とするときはプリペイド KIT API を使い、成功1件あたり $0.002 です。SDK を出荷する作者は result をコピーボタンに直接載せ、key、key_inv、det、method で OpenAPI 例を自己説明的にできます。ペイロードは Worker isolate の item 呼び出しに適した通常のテキストサイズに保ち、本ツールはメッセージや断片向けであり、数メガバイトのバイナリ向けではありません。
技術的な質問
3×3ヒル暗号でテキストを暗号化するには?
空でない text、整数9個の key(例:6,24,1,13,16,10,20,17,15)、任意の mode encrypt(既定)を JSON で送ってください。応答の result に大文字の暗号文が入ります。
3×3ヒル暗号ツールは無料ですか?
ブラウザ版はお客様の端末で無料です。API 呼び出しは成功1件あたり $0.002 のプリペイド KIT 残高を使い、検証失敗は課金されません。