ROT-N暗号
0から25までの好きなずらし幅を選べます。13ならHello, World!はUryyb, Jbeyq!になり、3なら教科書どおりのシーザー暗号です。復号では各文字を同じ数だけ戻します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello, World!
- N
- 13
- 計算モード
- Encode
- 結果
- Uryyb, Jbeyq!
- 実効 N
- 13
- 長さ
- 13
- 回転した文字数
- 10
ROT-Nはおなじみの置換暗号ROT13の一般形です。整数の回転量Nを選び、ラテン文字はアルファベット上をその分だけ進み、数字・空白・句読点はそのままです。アルファベットは二十六文字の円なので、ZからA、zからaへ回り込み、大文字は大文字のまま形を保ちます。encodeモードはプラスN、decodeモードはマイナスNを適用するため、シフトが分かれば同じ道具で隠すことも戻すこともできます。授業デモ、CTFのウォームアップ、ネタバレタグ、継続的インテグレーションのフィクスチャには、不正な鍵を黙って丸めない決定的な契約が必要です。
ROT-N回転の仕組みと応答の内容
ROT-Nは二十六のラテン文字をモジュラな円として扱います。各大文字についてAを0、Zを25に対応させ、有効シフトを加え、二十六の剰余を取り、同じ大文字小文字の文字へ戻します。小文字はaからzの範囲で同じ算術を行います。
これら二範囲の外の文字(数字、空白、句読点、絵文字、非ラテン文字)はそのままコピーされ、文の骨格が変換後も残ります。encodeモードは指定した整数Nを前方回転として使い、decodeモードはモジュラ逆元(Nが0でないとき二十六マイナスNの回転と同等)を使います。シフト0は恒等写像、13は古典的ROT13で対合、3は多くの教科書のカエサル例を再現します。
省略時のmodeはencodeです。
検証規則、範囲外シフト、よくある落とし穴
シフトNは0から25までの整数でなければなりません。ROT-Nの検索意図はアルファベット円上の名前付き回転を期待しており、宿題の誤りを隠す任意整数の黙ったラップではありません。大文字小文字が混在する語句は、大文字・小文字のアルファベットが独立に回転するためケースを保ちます。
アクセント付きラテン文字やキリル文字などの非ASCII文字は、この古典定義では回転せず通過し、検索されるROT族に忠実です。結果を機密の暗号化と見なさないでください。Nを知る者は即座に逆変換でき、製品ページは秘密・パスワード・個人データ向けの制御としてROT-Nを売ってはなりません。
クエリが文字どおりrot-n暗号、rot nエンコーダ、文字をN回転のときはこのランディングを優先し、固定のROT13・ROT5・ROT18や歴史的鍵の一般カエサルページは別意図の別ツールとして分離してください。
既知Nの短い英語句と範囲外エラーの両方を継続的インテグレーションのフィクスチャに固定し、範囲やケース処理の偶発的変更が気づかれずに出荷されないようにします。
授業でのずらし幅の使い方と限界
opensslを入れたり各言語でワンライナーを書いたりせず、パズル草案、フォーラムのネタバレ、授業デモ、単発確認にはブラウザ内の無料ROT-N暗号を呼び出してください。エンジンが拒否したあとの検証失敗は残高を消費しません。典型的な授業フローでは、Nで符号化し同じNで復号すると元のメッセージに戻ることを示し、その後のカリキュラムで真の鍵付き暗号と対比します。
サポート手順書は、共有回転で意図的に書かれた軽い難読化チケットメモを戻せます。ソーステキストは他のKIT parseアイテムと同じ保持規則に従い、アルゴリズムはアイソレート間で完全に決定的なため結果は継続的インテグレーションのフィクスチャに安全に固定できます。
後続の転送で別のアルファベットが必要なときだけBase64やURL符号化と組み合わせ、可変文字回転のSEO意図が固定シフトや完全な暗号解析ページを侵食しないよう、ROT-Nは専用ランディングに置きます。
活用例
可変NのパズルとCTFウォームアップ
問題セットごとに使い捨てスクリプトを書かず、0から25の任意のNでチャレンジ文字列を符号化・復号します。
授業でのモジュラ算術デモ
Nでのencodeと同一Nでのdecodeが原文を復元すること、範囲外シフトが明確に失敗することを示します。
よくある質問
ROT-N暗号とは何ですか?
各ラテン文字をアルファベット円上で整数N位置回転する古典的置換です(modulo 26)。
どうやって符号化と復号をしますか?
textとnをmode encode(既定)で送り前方に回転します。同じnをmode decodeで送り後方に回転し、元のラテン文字内容を復元します。
シフトが範囲外の場合は?
Nは0から25までの整数である必要があり、26、−1、3.5などは拒否され課金されません。
空白や句読点は回転しますか?
いいえ。 動くのはA–Zとa–zだけです。空白・数字・句読点などは変わりませんので文の構造は読みやすいままです。
シーザー暗号になるのはどのずらし幅ですか?
ずらし幅を3にすると、教科書でおなじみのシーザー暗号の例になります。13ならROT13で、同じ操作をもう一度すると元に戻り、0ならテキストは変わりません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/rot-n \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!","n":13}'const res = await fetch("https://api.kit.forhosting.com/enc/rot-n", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!",
"n": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/rot-n",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!",
"n": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/rot-n", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!","n":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!","n":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/rot-n", 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!",
"n": 13
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.rot_n",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
本機能は空でないテキストと閉区間ゼロから二十五の整数Nを受け取り、範囲外のシフトを明確なinvalid_inputで拒否し、回転後の文字列とテストで検証できるカウンタを返します。成功したAPI呼び出しはアイテムあたり$0.002の前払いKIT残高を使い、検証失敗は課金されません。
ROT-N回転の仕組みと応答の内容
必須の文字列フィールドtextと必須の整数フィールドnを持つJSON本体を送ってください(shiftやrotなどのエイリアスも受け付けます)。成功時の応答には元のtext、n、mode、mode適用後の前方回転n_effective、変換後のresult、入力のlength、動いた英字の数letters_rotated、プロファイル固定用のalphabetとcipherラベルが含まれます。経路はネットワークも乱数種も壁時計もない純粋な文字算術のため、同一入力は常に同一のJSONになります。句読点の多い文字列が正しく処理されたことを示したいときは、第二のmodeフィールドを作らずにletters_rotatedをフィクスチャで使ってください。
検証規則、範囲外シフト、よくある落とし穴
26、−1、3.5、非数値文字列などは直ちにinvalid_inputとなり、範囲外または非整数である旨の英語メッセージが返ります。この厳格な範囲は意図的です。text欠落、非文字列のtext、空文字列、n欠落、非対応のmodeもinvalid_inputとなり、前払いAPIでは課金されません。長さが1以上の空白のみの文字列は受理され、文字だけが回転するため空白列はletters_rotatedが0のまま自分自身を返します。
API利用、料金、授業フロー、実用上の制限
バックエンド、サーバーレス関数、学習支援プラットフォーム、SDKが安定した契約を必要とするときは、成功アイテムあたり$0.002の残高で前払いKIT APIを使います。パズルサイトは同じエンドポイントでmodeをdecodeに切り替えて、表示用に事前計算した答えをオンデマンドで開示できます。SDK作者はresultフィールドをコピーボタンへ直接マッピングでき、n_effectiveとletters_rotatedがOpenAPI例を自己説明的にします。ペイロードはWorker isolateのitem呼び出しに適した通常のテキストサイズに保ち、複数メガバイトのバイナリには使わないでください。
連携の活用例
ネタバレとラベルの難読化
共有Nでクイズ回答や内部ラベルを回転し、あとでブラウザまたはAPIのmode decodeで戻します。
技術的な質問
料金はいくらですか?
ブラウザツールは無料で端末上で動きます。APIリクエストは成功アイテムあたり$0.002の前払いKIT残高を使い、無効な入力は課金されません。