ボーフォート暗号
キーワードKEYを使うと「Hello, World!」は「Danzq, Cwnnh!」になり、同じキーワードで元に戻ります。ボーフォート暗号は鍵の文字から各文字を引く方式で、その操作が自分自身を打ち消すためです。空白や記号は変わりません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello, World!
- 鍵
- KEY
- 結果
- Danzq, Cwnnh!
- 鍵の文字
- KEY
- 鍵の長さ
- 3
- 長さ
- 13
ボーフォート暗号は古典的な逆元多表式暗号です。各ラテン文字は繰り返すキーワードに対して、モジュラ式 C が K から P を引いて二十六で剰余を取る変換を受け、その写像は自己逆なので、同じ鍵で暗号文をもう一度通すと平文に戻ります。テキストと、ラテン文字を少なくとも一つ含むキーワードを貼り付けます。A から Z と a から z は鍵の下で動き、数字・空白・句読点などの他の文字はそのまま残るため、読みやすい構造が保たれます。
ボーフォート暗号がキーワードでテキストを変換する仕組み
Beaufort は Vigenère 族の多表式の親戚ですが、暗号化規則は異なり、かつ逆元です。平文の各文字とキーワードの各文字を、ラテンアルファベット上のゼロから二十五までの添字に写します。
メッセージ内の各アルファベット文字について、次のキーワード文字を取り(変換すべき文字がある限りキーワードは繰り返します)、暗号文の添字を鍵の添字から平文の添字を引いたものとして二十六で剰余を取ります。結果を同じ大文字小文字の文字に戻すため、大文字の H は大文字の暗号文字になり、小文字は小文字のままです。
A–Z と a–z 以外の文字——空白、カンマ、数字、絵文字、基本ラテンブロック外のアクセント付き文字——は変更なくコピーされ、キーワードのポインタを進めません。この設計は教科書の表や、文のアルファベット骨格だけを混ぜる歴史的な海軍信号の実務と一致します。
鍵の文字から文字を引く操作はアルファベット円上の対合なので、同じキーワードを二度適用すると最初の変換が取り消されます。暗号化と復号は同じ操作であり、このツールに別のモードフラグは不要です。数学的には各ステップが固定二十六文字アルファベット上の整数モジュラ演算です。
鍵の浮動小数点丸め、ネットワーク呼び出し、乱数シード、時刻印はありません。本ページは古典 Beaufort のみを実装します——単一シフトのシーザー暗号でも、AES でも、辞書の全語を試す自動鍵復元器でもありません。それらは別ツール・別検索意図・別ランディングです。
ボーフォート暗号ツールが実務で現れる場面
入門の暗号学コースは、シーザーの後・現代のブロック暗号の前に Beaufort を紹介し、学生が多表式の表を練習し、別の復号規則を要しない逆元写像を見るようにします。CTF のウォームアップやパズルハントは今も Beaufort やその変種のメッセージを隠し、解く側は汎用の暗号解析スイートではなく、予測可能なキーワード変換を求めます。
オフラインのワークシートとオンラインのチェッカーが、暗号化と復号の両経路を一つのボタンで採点しても揃うようにするためです。サポートやコンテンツのチームは、ネタバレ、クイズの答え、内部ラベルを古典キーワード暗号で軽く隠し、言語固有の暗号ライブラリを入れずに逆方向が欲しいことがあります。
エンジニアリングのテスト harness は文字列変換パイプライン向けの参照ベクトルを生成し、鍵がラップするとき、非文字がメッセージを遮るとき、大文字小文字が混ざるときに安定した出力を必要とします。
固定一文字のシーザーシフト、Beaufort の引き算ではなく Vigenère 加算の多アルファベット、強い認証付き暗号、Base32 や Base64 符号化、頻度解析による自動鍵復元が必要な場合は、この古典 Beaufort キーワードのページを過負荷にせず、別の検索意図とランディングとして扱ってください。
活用例
教室での多表式デモ
既知のキーワードで例文を暗号化・復号し、入門暗号の授業が別の復号モードなしに逆元の表を示せるようにします。
パズルと CTF のキーワード暗号
課題セットごとに使い捨てスクリプトを書かず、チャレンジ文字列に Beaufort キーワードを適用または逆転します。
よくある質問
ボーフォート暗号とは何ですか?
繰り返すキーワードと各文字を C = (K − P) mod 26 で組み合わせる古典多表式暗号です。逆元であり、同じ操作で暗号化と復号を行います。
ボーフォート暗号文はどう復号しますか?
暗号文を text、元のキーワードを key として同じ能力をもう一度呼び出します。Beaufort は自己逆なので、二回目の通過で平文に戻ります。
鍵が空だとどうなりますか?
キーワードにはラテン文字 A–Z または a–z が少なくとも一つ必要です。空や文字なしの鍵は拒否され、課金されません。
空白や句読点は暗号化されますか?
いいえ。 変換されるのは A–Z と a–z だけです。空白・数字・句読点・その他の文字はそのまま通り、キーワードを進めません。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。無効な入力は課金されません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/beaufort \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!","key":"KEY"}'const res = await fetch("https://api.kit.forhosting.com/enc/beaufort", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!",
"key": "KEY"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/beaufort",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!",
"key": "KEY"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/beaufort", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!","key":"KEY"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!","key":"KEY"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/beaufort", 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": "KEY"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.beaufort",
"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 は同じ純粋な同型関数を共有するため、授業デモ、CTF のウォームアップ、自動パイプラインはネットワーク呼び出しや乱数シードなしで、同じ入力に対して常に同じ変換結果に一致します。
ボーフォート暗号がキーワードでテキストを変換する仕組み
同一のテキストとキーワードは常に同一の JSON を生み出します。
送信する内容と返ってくる内容
単純な恒等確認だけなら text は空でも構いませんが、アルファベットフィルタ後の key は空であってはなりません。検証失敗は前払い残高を消費しません。古典的な確認には、キーワード KEY で Hello, World!を変換すること、暗号文と同一鍵を再度渡すと元の句が戻ること、空鍵が無操作の恒等として扱われず拒否されることが含まれます。必須の文字列フィールド text と必須の文字列フィールド key を送ります。空白のみの文字列や、数字・記号だけの鍵は invalid_input と、空鍵要件に触れる明確な英語メッセージで失敗します。成功時の応答は元の text と key、実際に使われた大文字 A–Z ストリームである key_letters、そのストリームのアルファベット位置数 key_length、変換後の result 文字列、その結果の length、動いたアルファベット文字数 letters_transformed、さらに alphabet と cipher のラベル、reciprocal の true フラグ、クライアントが当たったプロファイルを主張できる formula 文字列 C equals K minus P mod 26 をエコーします。text 欠落、key 欠落、いずれかが非文字列オブジェクト、文書化された最大長を超える文字列は invalid_input で失敗します。成功した API 呼び出しの料金は公開されている基本単価 $0.002 です。
ボーフォート暗号ツールが実務で現れる場面
この能力は純粋な parse エンジンなので、API 料金は成功件ごとの公開基本単価 $0.002 であり、検証失敗は残高を消費しません。
連携の活用例
ネタバレとラベルの軽量な秘匿
クイズの答えや内部ラベルを古典キーワードで混ぜ、後でブラウザまたは API の同一契約で復元します。