シーザー暗号とROT13
ROT13ではHello, World!がUryyb, Jbeyq!になります。各文字を13文字ずらし、大文字は大文字のまま、コンマや空白、感嘆符はそのまま残ります。ずらし幅は自由に選べ、同じ数で復号できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 入力テキスト
- Hello, World!
- 結果
- Uryyb, Jbeyq!
- 指定したシフト量
- 13
- 実効シフト量
- 13
- 操作
- Encode
シーザー暗号は文字を一定量ずらします。ROT13はシフト13の場合です。
シーザー暗号は文字をこうずらします
シーザー暗号は、各文字をアルファベットの中で決まった数だけずらし、Zの次はAに戻ります。最もよく知られているのが13ずらすROT13で、これが初期設定です。動くのはAからZまでの文字だけで、大文字は大文字の中で、小文字は小文字の中で回ります。そのため、Hello, World!はUryyb, Jbeyq!になり、コンマ、空白、感嘆符は同じ位置に残ります。数字やそのほかの記号も変わらないので、数字は読めるままで、文の形も保たれます。
ずらし幅、復号、元に戻す仕組み
ずらし幅にはどんな整数も使え、マイナスの値や25より大きい値も指定できます。アルファベットは26文字なので、26ずらしても何も変わらず、−1は25と同じになります。結果には、実際に使われたずらし幅が必ず表示されます。復号は、同じ量だけ逆向きに文字を回す処理です。同じずらし幅で暗号化してから復号すれば、必ず元の文章に戻ります。授業での説明、パズルでのずらし幅の試行、ネタバレや答えを軽く隠す用途に向いています。
文字だけ回転、他はそのまま
ASCII の英字だけがアルファベット上を動きます。空白・数字・句読点は変わりません。大文字と小文字は別々に保たれます。
カンマ付きの文も形を保ったまま符号化でき、授業デモや往復テストに向きます。
どんな整数のずらし幅にも対応
既定は 13(ROT13)。26 は恒等、−1 は 25 相当です。
decode は逆回転
decode は −shift を適用しつつ元の shift を報告します。同じ shift で encode のあと decode すると平文が決定的に戻ります。
活用例
ROT13 と授業
古典的な換字を一つのシフトと即 decode で示します。
CTF
暗号文にシフトを試し、浮動小数の罠を避けます。
軽い隠蔽
文字だけ隠せばよいネタバレを軽く伏せます。
CI
encode/decode の往復をテストで固定します。
よくある質問
初期設定のずらし幅はいくつですか?
初期設定は13で、定番のROT13です。Hello, World!はUryyb, Jbeyq!になり、もう一度13ずらすと元に戻ります。13を2回足すと、アルファベット26文字分になるためです。
数字もずれますか?
ずれません。動くのはAからZまでの文字だけで、数字、空白、句読点はそのまま残ります。大文字と小文字はそれぞれの中で回るため、大文字・小文字の区別も保たれます。
ずらし幅を26や−1にするとどうなりますか?
26ずらすと各文字が元の文字に戻るので、文章は変わりません。−1は25と同じ結果です。どんな整数でも指定でき、実際に使われた0から25のずらし幅が結果に表示されます。
ROT13で秘密を守れますか?
軽く隠す程度にとどまります。ネタバレやパズルの答えをひと目で読まれないようにはできますが、同じずらし幅をかければ誰でも元に戻せます。個人情報の保護には向きません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/caesar-cipher \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!"}'const res = await fetch("https://api.kit.forhosting.com/text/caesar-cipher", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/caesar-cipher",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/caesar-cipher", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/caesar-cipher", 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!"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.caesar_cipher",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_text_chars | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
このツールは A–Z と a–z だけを回し、数字と句読点はそのまま、有効シフトを 26 の剰余で報告し、無料ブラウザと API で文字ごとに一致します。
任意の整数シフトと shift_effective
負の値や 25 超も可で、有効回転は常に ((shift % 26) + 26) % 26 として shift_effective に出します(decode でも入力シフト基準)。
型付きエラーと上限
text は必須で最大 100000 文字。非整数の shift(float や bool)、不正な mode、欠落は invalid_input です。
技術的な質問
既定のシフトは?
13(ROT13)。
数字も回る?
いいえ。英字のみ。
shift_effective とは?
入力シフトを 0…25 に正規化した値。
decode の動きは?
−shift で回し、shift 欄は入力のまま。
負のシフトは?
可。−1 は実効 25。
無料?
ブラウザは無料。アプリは $0.002。