シーザー暗号
シフトを3にすると「Hello, World!」は「Khoor, Zruog!」になります。各ラテン文字が3つ先へ進み、Zの次はAに戻り、空白や句読点はそのままです。同じ鍵で復号でき、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello, World!
- 整数の文字シフト
- 3
- 計算モード
- Encrypt
- 結果
- Khoor, Zruog!
- シフト mod 26
- 3
- 長さ
- 13
- シフトした文字数
- 10
シーザー暗号は、アルファベットの各文字を固定の整数距離だけ回転させる古典的な換字式暗号です。シフトが3のとき、AはDに、BはEに、Zは循環してCになります。復号は同じ距離だけ逆方向に回転します。本機能は、貼り付けた任意のテキストにそのモジュラー文字シフトを適用します。ラテン文字の大文字・小文字は指定キー分だけ動き、数字・空白・句読点などの他文字はそのまま残るため、Hello, World!のような文は暗号化後も構造が読み取りやすく保たれます。テキスト、整数のシフト、任意の暗号化/復号モードを指定します。
シーザー文字シフトがテキストを暗号化・復号する仕組み
シーザー暗号は二十六のラテン文字を円として扱います。暗号化では、各文字をその円上でN個先の文字に置き換え、ZからAへ循環します。復号では同じキーを逆に適用し、各文字をN個戻すか、同等に負のシフトNで暗号文を再暗号化します。
大文字小文字は保持されるため、シフト3の大文字Aは大文字Dになり、小文字aはdになります。A–Zおよびa–z以外の文字(空白、カンマ、数字、絵文字、基本ラテン以外のアクセント付き文字など)はそのままコピーされます。この設計は、文のアルファベット骨格だけを乱す教科書例やパズル本と一致します。
数学的には二十六を法とするモジュラー演算です。符号付き整数キーを0から25の範囲に正規化し、各文字を0から25のインデックスに写像し、キーを加え、余りを取り、同じケースの文字に戻します。シフト26は恒等変換、29は3と同じ、マイナス3は前方シフト23と等価です。
各段階はキー自体の浮動小数点丸めのない整数演算であるため、変換は完全に決定的です。経路にネットワーク呼び出し、乱数シード、壁時計タイムスタンプはありません。本ページは古典的な単一アルファベットのシーザーシフトを実装しており、多アルファベットのVigenèreキーでもAESでも、あらゆるシフトを試す自動ブルートフォース解読でもありません。
それらは別ツールと別の検索意図です。
実務でシーザー暗号ツールが使われる場面
入門の暗号学や離散数学の授業では、ブロック暗号に進む前にモジュラー演算を練習させるためシーザー演習が出ます。明示的な整数キーで暗号化・復号する信頼できるオラクルは、宿題デモと自動採点を速めます。
キャプチャ・ザ・フラグのウォームアップやパズルハントでは、今なお ROT 風のメッセージが目の前に隠されており、解く側は一般的な暗号解析スイートではなく、高速で予測可能なシフターを求めます。サポートやコンテンツチームは、ネタバレ、クイズの答え、内部ラベルを些細な回転で軽く伏せ、言語固有の暗号ライブラリを入れずに逆変換が欲しいことがあります。
強い認証付き暗号、複数文字の Vigenère キー、Base32 や Base64 符号化、頻度分析による自動鍵復元が必要な場合は、この古典シーザーシフトのページに載せず、別の検索意図とランディングとして扱ってください。
活用例
授業でのモジュラー演算デモ
既知の整数シフトで例文を暗号化・復号し、代数と入門暗号の授業が一つの基準変換を共有できるようにします。
パズルとCTFのウォームアップシフト
問題セットごとに一回限りのスクリプトを書かず、チャレンジ文字列に固定の文字回転を適用または反転します。
よくある質問
シーザー暗号とは何ですか?
アルファベット円上で各ラテン文字を固定の整数距離だけ回転させる古典的な換字式暗号です(二十六を法)。非文字はそのままです。
テキストを復号するには?
暗号化時と同じ整数シフトで mode を decrypt にするか、否定したシフトで暗号化してください。どちらも回転を逆にします。
シフトが整数でない場合は?
シーザー鍵は整数でなければならず、3.5 のような小数シフトは拒否され課金されません。
空白や句読点は暗号化されますか?
いいえ。 回転されるのは A–Z と a–z のみです。空白・数字・句読点などの他文字はそのまま通過します。
26より大きいシフトや負のシフトはどうなりますか?
シフトは26で割った余りとして扱われます。26ずらすと元の文と同じになり、29は3と同じ、マイナス3は前方へ23ずらすのと同じ結果です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/caesar \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!","shift":3}'const res = await fetch("https://api.kit.forhosting.com/enc/caesar", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!",
"shift": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/caesar",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!",
"shift": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/caesar", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!","shift":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!","shift":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/caesar", 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!",
"shift": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.caesar",
"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を生成します。
送信内容と返却内容
encrypt モードは文字を shift 分前へ回転し、decrypt モードは同じ絶対距離だけ後ろへ回転します。検証失敗は前払い残高を消費しません。古典的な確認例として、Hello, World!をシフト3で Khoor, Zruog!に暗号化し、その暗号文を元に戻して復号し、小数シフトが丸められず拒否されることを確認します。必須の文字列フィールド text、必須の整数フィールド shift、および任意の mode フィールド(encrypt または decrypt)を送信します。mode を省略すると既定は encrypt となり、最小ペイロードでも有用な処理が行えます。成功時の応答は mode、元の text、指定した整数 shift、mode と二十六を法とした後の有効な前方回転 shift_mod_26、変換後の result 文字列、その length、回転したアルファベット文字数 letters_shifted、および到達プロファイルを表明するクライアント向けの alphabet と cipher ラベルをエコーします。text の欠落、shift の欠落、text への非文字列オブジェクト、未対応の mode 値、文書化された最大長を超える文字列、および 3.5 のような浮動値や小数点付き数値文字列を含むあらゆる非整数 shift は invalid_input と明確なメッセージで失敗します。成功した API 呼び出しの価格は公開ベースの $0.002 です。
実務でシーザー暗号ツールが使われる場面
本機能は純粋な parse エンジンであるため、API 価格は成功1件あたり公開ベースの $0.002 で、検証失敗は残高を消費しません。
連携の活用例
ネタバレとラベルの軽い難読化
クイズの答えや内部ラベルを些細なキーで回転し、後からブラウザまたはAPIの同一契約で復号します。
技術的な質問
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API は前払い KIT 残高を成功1件あたり $0.002 で使用し、無効な入力は課金されません。