レールフェンス暗号
メッセージをレールにジグザグに書き、行ごとに読み出します。3本のレールでWEAREDISCOVEREDFLEEATONCEはWECRLTEERDSOEEFEAOCAIVDENになり、同じ本数で元に戻せます。パズルや授業向けで、秘密の保護には使えません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- WEAREDISCOVEREDFLEEATONCE
- レール数
- 3
- 計算モード
- Encrypt
- 結果
- WECRLTEERDSOEEFEAOCAIVDEN
- 長さ
- 25
レールフェンス暗号は、固定本数のレール上を上下にジグザグで文字を書き、各レールを左から右へ読むことで文字の順序を入れ替える古典的な転置暗号です。レールを2本以上にすると、文字そのものは変えずにメッセージが混ざり、空白や句読点も置換ではなくジグザグに沿って移動します。パズル本、CTFのウォーミングアップ、転置と換字の対比授業、鍵付き現代暗号が過剰な場合の軽いネタバレ隠しなどに使われます。本機能は空でないテキスト、2以上の整数レール数、および暗号化または復号の任意モードを受け取り、正規化されたモード・使用レール数・長さ付きで変換後の文字列を返します。
レールフェンスのジグザグの仕組みと応答の内容
暗号化では、経路が最上段レールから最下段へ下り、再び上へ向かう間に、連続する文字を連続するレールへ書き込み、メッセージ全体が配置されるまで繰り返します。読み出しは第1レールの文字を左から右へ連結し、第2レール、最後のレールまで同様に続けた結果が暗号文になります。
復号は既知の長さとレール数で同じ占有パターンを再構築し、暗号文の次の断片で各レールを埋め、再びジグザグを辿って元の順序を復元します。任意の mode の既定は encrypt です。encrypt と encode は順方向のジグザグを、decrypt と decode は逆方向を実行します。
検証ルール、レール上限、よくある落とし穴
製品の約束は本物の複数レールジグザグであり、1レールではメッセージが変わらないためです。256を超えるレールは、Worker アイソレートのアイテム呼び出し内でパターン構築を抑えるために拒否されます。空白・数字・句読点・非ラテン文字は除去されず、すべての符号単位が転置に参加するため、記号は保たれ順序だけが変わります。
結果を機密性のための暗号化として扱わないでください。レール数を知る者はすぐに逆算でき、製品ページでパスワード・トークン・個人データのセキュリティ管理として rail fence を宣伝すべきではありません。
検索意図がレールフェンス暗号・ジグザグ暗号・rail-fence の暗号化/復号である場合はこのランディングを優先し、Atbash と ROT13 は換字意図、Base64 や hex は符号化意図に答え、別ツールのままにします。復号時は暗号文を生成したのと同じレール数を使ってください。誤ったレール数は別の置換を生み、元の平文と一致しません。
授業での使い方と実用上の制限
パズル草案、講義スライド、CTF練習、単発確認には、言語ごとにジグザグ処理を書かずにブラウザの無料レールフェンス暗号を使ってください。検証失敗は拒否後に残高を消費しません。サポートのプレイブックは、スタッフが既知のレール数で意図的に書いた軽いスクランブルのチケットメモを戻せます。
パズルサイトは表示用に答えを事前計算し、mode decrypt でオンデマンドに開示できます。後の授業で別の暗号族が必要なときだけ換字ツールと組み合わせ、SEO意図がジグザグ転置にシャープなままになるよう rail fence は専用ランディングに保ってください。
活用例
パズルとCTFの転置ウォーミングアップ
既知のレール数で手がかりやチャレンジフラグを隠し、解答者が暗号ライブラリを入れずに開示が必要なときに同じレール数で復号します。
授業での転置デモ
教師はジグザグ再配置と換字暗号を対比します。暗号化・復号を行い、文字の正体は保たれ順序だけが変わることを示します。
よくある質問
rail-fence の暗号文を復号するには?
暗号文を text に、暗号化時と同じ rails、mode decrypt(または decode)を送ってください。レール数が一致すれば result は復元された平文です。
レールが2本未満だとどうなりますか?
rail-fence 製品は少なくとも2レールを要求し、1レールではテキストが変わりません。
rail fence は安全な暗号化ですか?
いいえ。 rail fence はパズルと教育向けの古典的転置であり、機密性のためのものではありません。パスワードや機微データには絶対に使わないでください。
レールフェンス暗号で暗号化するには?
テキストを入力し、レールの本数と暗号化を選びます。文字が上下のレールにジグザグに配置され、上のレールから順に左から右へ読み出したものが暗号文になります。
空白や句読点はどうなりますか?
取り除かれることも置き換えられることもありません。空白、数字、句読点、ラテン文字以外の文字もジグザグに沿って並び替えられ、変わるのは順番だけなので長さも同じです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/rail-fence \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}'const res = await fetch("https://api.kit.forhosting.com/enc/rail-fence", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/rail-fence",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/rail-fence", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/rail-fence", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.rail_fence",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
レールが2未満、または空テキストは invalid_input で失敗します。
レールフェンスのジグザグの仕組みと応答の内容
必須の文字列フィールド text に空でないメッセージを、必須の整数フィールド rails に2以上を設定した JSON を送ってください。input、value、s、message は本文の別名として、key、n、num_rails はレール数の別名として、古いフォーム名の再利用時に使えます。成功時の応答には変換後テキストの result、encrypt または decrypt に正規化された mode、使用した整数の rails、入力文字数と等しい length、クライアントが形を推測せず分岐できるよう method が rail_fence である値が含まれます。経路は純粋な添字演算で、ネットワーク・乱数シード・壁時計を使わないため、同一入力は常に同一 JSON を生成します。
検証ルール、レール上限、よくある落とし穴
text の欠落・非文字列・空文字列はすべて invalid_input となり、エンジンが拒否したあとプリペイドAPIでは課金されません。rails の欠落・非整数・2未満も invalid_input で失敗します。
APIの使い方、料金、授業フロー、実用上の制限
バックエンド・サーバーレス関数・学習プラットフォーム・SDKが $0.002 成功アイテムあたりの残高下で安定契約を必要とする場合は、プリペイド KIT API を使います。典型的な授業では短い文を紙のレールに書き、生徒の答えをAPI結果と比較し、鍵がレール数であるとき転置が可逆であることを復号で示します。SDKを出荷する作者は result フィールドをコピーボタンへ直接マップでき、mode・rails・method が OpenAPI 例を自明にします。ペイロードは Worker アイソレートのアイテム呼び出しに適した通常のテキストサイズに留め、複数メガバイトのバイナリには使わないでください。
連携の活用例
パイプラインとCIのfixture
スクリプトと継続的インテグレーションのテストが決定的な rail-fence 出力を固定し、パターンやレール境界の偶発バグを即座に失敗させます。
技術的な質問
レールフェンス暗号でテキストを暗号化するには?
空でない text、少なくとも2の整数 rails、任意の mode encrypt(既定)を JSON で送ってください。応答の result フィールドにジグザグ暗号文が入ります。
レールフェンス暗号ツールは無料ですか?
ブラウザツールはお使いの端末上で無料で動作します。API呼び出しは成功アイテムごとに $0.002 のプリペイド KIT 残高を使い、検証失敗は課金されません。