単一換字式暗号
鍵QWERTYUIOPASDFGHJKLZXCVBNMを使うと、Hello WorldはItssg Vgksrになります。26文字の暗号アルファベットをすべて自分で指定し、各文字の置き換え先は1つに固定され、復号では表を逆にたどります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello World
- Key
- QWERTYUIOPASDFGHJKLZXCVBNM
- 操作
- Encrypt
- 結果
- Itssg Vgksr
- アルファベット
- QWERTYUIOPASDFGHJKLZXCVBNM
- 対応付けた文字
- 10
単純換字式暗号(モノアルファベット暗号)は、アルファベットの各文字をちょうど別の1文字に置き換え、その対応をメッセージ全体で固定します。短い種からアルファベットを組み立てるキーワード暗号とは異なり、本ツールは26文字の暗号アルファベット全体を鍵として受け取るため、対応をすべて直接指定できます。平文または暗号文を貼り付け、AからZの順列を渡し、暗号化または復号を選ぶと、変換後の文字列と写像された文字数が返ります。空白・数字・句読点はそのまま通り、大文字小文字は保持されます。授業での単一換字デモ、パズル制作、CTFの導入、短いメモの可逆的な難読化に使えます。
単一換字の鍵アルファベットの仕組み
古典的な単純換字式暗号では、平文アルファベットAからZが、同じ長さの暗号アルファベットと位置ごとに対応付けられます。提供する鍵がその暗号アルファベットです。先頭文字がAを、2番目がBを、というようにZまで置き換えます。
例えば鍵QWERTYUIOPASDFGHJKLZXCVBNMは平文AをQ、BをW、CをEなどに写像し、メッセージ全体で固定の単一換字表を作ります。暗号化は平文アルファベット上の各文字を探し、鍵の同じ添字の文字を出力します。復号は逆引きを行い、往復で元の大文字小文字と非文字を正確に復元します。
数字・空白・句読点・絵文字・非ラテン文字は写像に入らずそのままコピーされるため、日付やコード、体裁は読めます。同一文字の大文字と小文字は1エントリを共有し、エンジンは各元文字のケースを保つため、HELLOとhelloは同じ鍵に対して一貫して暗号化されます。写像がメッセージの全文字で固定のため、長い英語暗号文は頻度分析で破られることがあります。
本ツールは教育・パズル・軽い難読化向けであり、保管中や通信中の秘密保護には向きません。検索意図が単一換字式暗号や完全な鍵アルファベットによる単純換字のときは本ページを優先し、キーワード由来のアルファベット、シーザーシフト、ヴィジュネル多表換字は別意図のため別ツールのままにします。
暗号化・復号と不完全な鍵の検証
必須のtext文字列と必須のkey文字列を送り、任意でactionをencryptまたはdecryptに設定します(既定はencrypt)。鍵は前後の空白が除かれ、AからZの文字のみを含みます。大文字に正規化した後、ちょうど26文字で、アルファベットの各文字をちょうど1回使わなければなりません。
長さが26でない場合は不完全な鍵と実際の長さを報告し、黙って埋められたり切り詰められた写像ではなく、アルファベットを完成させられるようにします。同じ文字が複数回出る場合も、その繰り返し文字を不完全な鍵として報告して失敗します。順列は各文字を1回ずつ覆う必要があります。
encryptは平文アルファベットから鍵アルファベットへ、decryptは逆方向に文字を辿ります。公開面の安定化中はstatusがbetaですが、置換規則はこの固定の古典構成に従い、同一入力では変わりません。
授業での換字表の使い方と限界
同じ鍵アルファベットで作られた暗号文にはaction decryptを使います。典型的な授業では手書きの26文字順列を示し、短い英文を暗号化し、復号で可逆性を示し、後で固定写像を多表換字と対比します。パズルサイトはアルゴリズムが隔離環境間で完全に決定論的なため、既知の鍵と暗号文を継続的インテグレーションのフィクスチャに固定できます。
サポート手順書は、共有の換字アルファベットで意図的に難読化したチケットメモを戻せます。単純換字をAESや認証付き暗号の代わりにしないでください。長い英語では文字頻度が構造を漏らします。
手作業を安定した参照と照合できるよう、授業メモやパズルの説明と組み合わせてください。
活用例
授業での単一換字デモ
26文字の完全な暗号アルファベットを示し、例文を暗号化して復号し、不完全な鍵が拒否される理由を説明します。
パズルとCTFの導入
既知の換字鍵で、宝探し、脱出ゲーム、入門クリプト課題向けの可逆な暗号文を生成します。
軽い可逆的難読化
本格暗号ではなく素早い往復写像が必要なとき、共有の完全アルファベットで短いラベルやメモを混ぜます。
よくある質問
単一換字式暗号に必要な入力は何ですか?
必須はtextとkeyです。鍵はちょうど26個の一意なA–Z文字である必要があります。任意のactionはencrypt(既定)またはdecryptです。
不完全な鍵とは何ですか?
ちょうど26個の一意なA–Zでない鍵(長さ不正、欠落、重複)です。
この暗号は決定論的で安全ですか?
同じtext・key・actionでは完全に決定論的です。教育とパズル向けの古典的単一換字であり、現代の暗号安全性ではありません。
26文字の鍵はどう働きますか?
鍵は通常のアルファベットと位置ごとに対応します。最初の文字がAを、2番目の文字がBを置き換え、Zまで続きます。QWERTYUIOPASDFGHJKLZXCVBNMなら、AはQ、BはW、CはEになります。
キーワード暗号とは何が違いますか?
キーワード暗号は短い単語からアルファベットを組み立て、残りを補います。こちらは26文字すべてを自分で指定するので、どの文字をどれに置き換えるかを完全に決められます。ただし各文字は1回ずつ使う必要があります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/simple-substitution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello World","key":"QWERTYUIOPASDFGHJKLZXCVBNM"}'const res = await fetch("https://api.kit.forhosting.com/enc/simple-substitution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello World",
"key": "QWERTYUIOPASDFGHJKLZXCVBNM"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/simple-substitution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello World",
"key": "QWERTYUIOPASDFGHJKLZXCVBNM"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/simple-substitution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello World","key":"QWERTYUIOPASDFGHJKLZXCVBNM"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello World","key":"QWERTYUIOPASDFGHJKLZXCVBNM"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/simple-substitution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello World",
"key": "QWERTYUIOPASDFGHJKLZXCVBNM"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.simple_substitution",
"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メッセージですぐに失敗し、部分的なアルファベットが黙って壊れた写像になることはありません。
暗号化・復号と不完全な鍵の検証
鍵が欠落している、またはtrim後に空なら、欠けたkeyを示すinvalid_inputで失敗します。成功時は元のtext、正規化済み大文字key、使用したaction、alphabet欄(本構成ではkeyと同じ)、変換後のresult、置換したアルファベット文字数のletters_mappedを返します。
APIの利用、料金、授業フローと実用上の制限
必須フィールドtextとkeyで能力を呼び出します。ホストAPIの料金は成功リクエストあたり定額$0.002で、鍵欠落・不完全な鍵・文字重複などの検証失敗は残高を消費しません。ペイロードはWorkerアイソレートのitem呼び出しに適した通常のテキストサイズに留め、本ツールはメッセージや断片向けであり、数メガバイトのバイナリ塊向けではありません。自由文ではなくフィールド名を明示し、契約をOpenAPI、SDKの型、フォーム制御と揃えてください。
技術的な質問
成功レスポンスには何が含まれますか?
元のtext、正規化key、action、alphabet(鍵)、result文字列、letters_mapped(置換したA–Z文字数)です。
単純換字暗号APIの料金はいくらですか?
成功したAPI呼び出しは毎回$0.002です。同じエンジンはアカウント不要でブラウザ上でも無料で動きます。