ROT47エンコード・デコード
Helloはw6==@になり、同じ操作で元に戻ります。感嘆符からチルダまでの印字可能な文字が94文字の輪の上で47文字ずれ、空白やアクセント付きの文字はそのまま残ります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello World!
- 結果
- w6==@ (@C=5P
- エンコーディング
- rot47
- 入力長
- 12
- 出力長
- 12
このROT47エンコードツールは、感嘆符からチルダまでのすべての文字を、94文字のリングの中で47文字分シフトする古典的な印字可能ASCII版シーザー暗号を適用します。47がそのリングサイズのちょうど半分であるため、同じ操作がテキストを難読化することも元に戻すこともできます。平文を1回通せば隠され、その暗号文をもう一度通せば元に戻ります。スペース、タブ、改行、非ASCIIのUnicodeはそのまま通過するため、複数行のメモや複数の文字体系が混在するテキストも、スクランブルされた中心部の周りで読みやすさを保ちます。
ROT47とは何か、そしてこのツールが返す内容
ROT47は、コード33から126までの94個の印字可能ASCII文字上の置換暗号です。それぞれの記号は47ステップ先の記号にマッピングされ、モジュラー算術でリングを一周します。新しいコードは、33に、(コード-33+47)を94で割った余りを加えたものです。
文字、数字、句読点はすべて一緒に移動するため、ROT47は文字のみのROT13よりも密度が高く、パスワード、設定のスニペット、短いチャレンジ文字列のような混在したトークンをスクランブルするのに優れています。その範囲外の文字は決して変化しません。スペースは行を読みやすいまま保ち、絵文字やアクセント付きテキストは多言語のデモのために保持されます。
このページは常にこの正確なモジュラー規則を使い、任意のシフトパラメータも、言語間でずれる可能性のあるアルファベットテーブルもありません。ストリーミング経路も、ROT13へのサイレントなフォールバックもありません。
ROT47がパズル・デモ・テストフィクスチャで役立つ場面
開発者や教育者は、キャプチャー・ザ・フラッグのウォームアップ、古典的な暗号に関する教科書の章、そして鍵のスケジュールではなく単一の関数で元に戻さなければならない軽量なクライアントサイドの難読化でROT47に出会います。
フロントエンドチームは、独自のアルファベットを発明することなく、スクリーンショット用にサンプルの認証情報やトークン形式の文字列をスクランブルできます。そこでは学生が同じシフトを適用して次のステップを解除しなければなりません。
品質エンジニアは、ROT47対応を主張するミドルウェアがROT13や異なるオフセットにサイレントに切り替わることがないよう、契約テストのために決定的なエンコードペアを生成します。コンテストの主催者は、間隔の規則を変える不透明なウェブおもちゃに頼ることなく、手頃なASCIIフレーズについて模範解答をあらかじめ計算します。
プロダクトや教育向けのツールは、学習者が暗号文を貼り付け、UIがインボリューション(対合)の性質の下で復元された平文を表示しなければならないときにこの変換を使います。このページでの計算はすべてブラウザ内で完結します。無料で決定的なテキストツールの小さなラボを構築する際は他の符号化ヘルパーと組み合わせてご利用ください。
活用例
CTFと暗号のウォームアップ
パズル、教室、キャプチャー・ザ・フラッグの練習向けに、1つの可逆なステップで印字可能ASCIIのフレーズを難読化・復元します。
可逆なデモの難読化
ドキュメントやスクリーンショットでサンプルのトークンや設定スニペットを隠し、同じROT47の呼び出しで復元します。
よくある質問
ROT47をどうデコードしますか?
同じ変換をもう一度適用してください。ROT47はインボリューションです。印字可能ASCIIリング上でエンコードとデコードは同一の操作です。
どの文字がシフトされますか?
! から~まで(コード33〜126)の印字可能ASCIIです。スペース、制御文字、非ASCIIのUnicodeは変更されずに通過します。
結果は決定的ですか?
はい。 同じテキストは、ネットワーク、乱数、日付依存の挙動なしに常に同じ結果を生みます。
ROT47とROT13の違いは何ですか?
ROT13が動かすのは英字だけなので、数字や記号は読めるまま残ります。ROT47は数字や句読点を含む94の印字可能なASCII文字をすべて動かすため、コードや見本のパスワードのような混在した文字列をしっかりかき混ぜられます。
ROT47を2回かけると元に戻るのはなぜですか?
47が文字の輪の大きさである94のちょうど半分だからです。47文字ずらす操作を2回行うと一周して元の位置に戻るので、隠すのにも戻すのにも同じ操作を使えます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/rot47 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello World!"}'const res = await fetch("https://api.kit.forhosting.com/enc/rot47", {
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/enc/rot47",
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/enc/rot47", 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/enc/rot47", 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": "enc.rot47",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
よくある検証例として、Hello Worldはw6==@ (@C=5Pになり、その文字列は同じリクエストの下でHello Worldに戻ります。CTFのウォームアップ、可逆な難読化のデモ、パズルのワークシートにはブラウザで無料にご利用いただき、パイプラインがCIやバックエンドサービスで再現可能なROT47変換を必要とする場合は、成功したリクエストごとに$0.002のAPIをご利用ください。
ROT47とは何か、そしてこのツールが返す内容
JSONレスポンスには、変換された文字列を表すresult、rot47に固定されたencoding、ROT47が長さを保つため一致するinput_lengthとoutput_length、印字可能なリングの中に落ちたコード単位の数を数えるshifted_chars、文書化やテストのためにモジュラーマッピングを再度述べる式の文字列が含まれます。空でないtextを指定して完全な変換を受け取るか、そうでなければinvalid_inputでリクエストが失敗するかのいずれかです。文字のみの回転、URLセーフなBase64、モールス信号が必要な場合はそれぞれの専用エンドポイントをご利用ください。このランディングページは、パズル本や軽量な難読化ガイドがすでに説明しているROT47印字可能ASCII契約のみに答えます。
テキストの読み取り方法と結果を再現可能に保つ仕組み
文字列は存在し空でなければなりません。優先されるペイロードフィールドはtextで、input、value、s、messageといった別名を受け付けるため、フォーム、クエリ文字列、SDKクライアントは列名を変えずに同じ契約を再利用できます。フィールドの欠落、文字列以外の型、空文字列はいずれも、空のフォームが成功した無操作のように見えないよう、明確なメッセージとともにinvalid_inputを発生させます。すべてのコード単位は固定のモジュラーマップで独立して処理されるため、すべての文字がリングの内側または外側に一貫して存在する限り、変換を2回適用すると常に元のペイロードが得られます。自動化されたパイプライン内で94文字のリングを自前で再実装することなく同一の数学的結果が必要な場合は、このページの無料ブラウザ実行と有料APIを組み合わせてご利用ください。無効な入力はinvalid_inputを返し課金されないため、検証は安価なままであり、成功した変換は固定の項目価格のままです。長さのフィールドとshifted_charsのカウンターは、リング算術を各アサーションで再導出することなく、スペースが保持されたことと印字可能ASCIIのみが移動したことをテストが検証するのに役立ちます。
ROT47がパズル・デモ・テストフィクスチャで役立つ場面
バックエンドサービスは、パズルAPIや教育用サンドボックス向けの短い設定フラグメントをエンコードします。API経由では成功した検索1件につき$0.002がかかり、検証に失敗したリクエストは課金されず、レスポンスが返された後は何も保存されません。この無料のインタラクティブな探索と、同一結果を返す有料APIという分割は、KITのtier-Aカタログの他のツールと同様であり、教室でのデモから自動化パイプラインへ、変換された結果を変えることなく移行できます。
連携の活用例
決定的なCIフィクスチャ
サービスをまたいで、ユニットテスト、ゴールデンファイル、契約チェック向けに再現可能なROT47文字列を生成できます。
技術的な質問
ROT47エンコードツールの料金はいくらですか?
このページのブラウザ版は無料です。API経由では成功したリクエストごとに$0.002がかかり、無効な入力には課金されません。
空の入力の場合はどうなりますか?
空または欠落したtextはinvalid_inputで失敗し、課金されません。空でない文字列を指定してください。