QWERTY隣接キーシフト暗号
ずらす数を1にすると、helloはjraapになります。各文字が同じQWERTY行の右隣のキーに移り、lは行の先頭のaに戻ります。同じ数で復号すればhelloに戻り、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- hello
- オフセット
- 1
- 計算モード
- Encrypt
- 結果
- jraap
- 長さ
- 5
- シフトした文字数
- 5
- レイアウト
- qwerty
キーボードシフト暗号は、シーザー暗号のようにアルファベット上で文字を回転させません。代わりに物理的なQWERTY配列上で、各文字を隣のキーへ移します。offset が1で mode が encrypt のとき、QはWに、WはEに、AはSにと、同じ行上で進みます。復号は逆方向に進むため、対応する文字と空白だけであれば、既知のoffsetで元のメッセージを必ず復元できます。この機能は、設定可能な整数offsetとencrypt/decryptモードによる隣接キー変換を実装します。
QWERTYキーボードシフトが文字を動かす仕組み
米国式QWERTYの文字グリッドは、上段 qwertyuiop、ホーム段 asdfghjkl、下段 zxcvbnm の3つの独立した行として扱われます。暗号化は各文字を自身の行上で固定数だけ右へ動かし、復号は同じ距離を左へ動かします。歩数は指定する整数offsetです。
移動は行内でのみ折り返します。Pの次は再びQ、Lの次はA、Mの次はZとなり、アルファベット文字は常に同じ物理行の別の文字に着地します。大文字小文字は保持されるため、大文字Hをoffset 1で動かすと大文字Jに、小文字hはjになります。
空白はそのままコピーされ、複数語のフレーズの形が保たれます。数字、句読点、絵文字、基本ラテンブロック外の文字はサポートマップになく、エンジンは隣をでっち上げず、サポート外キーエラーで直ちに停止します。数学的には行インデックス上の合同算術です。
文字の行上位置を求め、行長を法としてoffsetを加減し、同じケースの文字へ戻します。offset 0は恒等写像、10キー行でのoffset 11はoffset 1と等価です。ネットワーク呼び出し、乱数シード、壁時計タイムスタンプはありません。
このページは同一行のQWERTY隣接のみを実装し、シーザー式アルファベット回転、複数行の斜め移動、強力な暗号化は扱いません。
キーボードシフト暗号が実務で使われる場面
入門暗号やキーボード配列パズルでは、アルファベット位置を数える代わりに指を横に1キーずらしてメッセージを乱す課題が多く、明示的な整数offsetで暗号化・復号できる信頼できるオラクルがあると宿題デモや自動採点が速くなります。
CTFのウォームアップや脱出ゲームの小道具は、メモや画像にQWERTYシフトした語句を隠すことがあり、解く側は一般的な暗号解析スイートより高速で予測可能な隣接キーツールを求めます。サポートやコンテンツチームは、軽いキーボードスライドでネタバレやクイズ答えを難読化し、言語固有ライブラリを入れずに逆変換が欲しい場合があります。
古典的シーザー回転、ヴィジュネル多表式、Base64符号化、強力な認証付き暗号が必要なら、このQWERTY隣接キーのページを拡張せず、別の検索意図とランディングとして扱ってください。
活用例
授業でのQWERTY隣接デモ
既知の整数offsetで例語を暗号化・復号し、学生にアルファベット計算ではなく同一行のキーボード隣接を見せます。
パズルとCTFのキーボードシフト
問題セットごとに使い捨てスクリプトを書かず、チャレンジ文字列に固定の隣接キースライドを適用または反転します。
よくある質問
キーボードシフト暗号とは何ですか?
シーザーのようにアルファベット上で回すのではなく、固定の整数offsetで各文字をQWERTY行上の隣のキーへ移す置換です。
テキストを復号するには?
暗号化に使ったのと同じ整数offsetで mode を decrypt にします。各文字を行上で左へ移し、文字と空白だけなら原文が復元されます。
行末でシフトは折り返しますか?
はい。 移動は同じQWERTY行内で合同なので、offset 1のPはQに、offset 1のLはAになります。
大文字・小文字やスペースはそのままですか?
はい。大文字のHをずらす数1で変換するとJ、小文字のhはjになり、大文字と小文字の区別は保たれます。スペースはそのまま写されるので、複数の単語からなる文も形が崩れません。
数字や記号を含む文字列が受け付けられないのはなぜですか?
対応するキーの表にあるのはラテン文字のAからZだけだからです。数字や記号、絵文字、ほかの文字があると、隣のキーを勝手に作らずにその場で止まります。感嘆符付きのhelloもそのため受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/keyboard-shift \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello","offset":1}'const res = await fetch("https://api.kit.forhosting.com/enc/keyboard-shift", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello",
"offset": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/keyboard-shift",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello",
"offset": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/keyboard-shift", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello","offset":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello","offset":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/keyboard-shift", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "hello",
"offset": 1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.keyboard_shift",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
ラテン文字A〜Zのみがシフトされ、大文字小文字は保持され、空白はそのまま残り、数字・句読点・その他の記号はサポート外キーとしてinvalid_inputエラーで拒否されます。無料のブラウザツールと有料APIは同一の純粋な同型関数を共有するため、授業デモ、パズル下書き、自動パイプラインは同じ入力に対して常に同じ結果文字列に一致します。
QWERTYキーボードシフトが文字を動かす仕組み
各ステップは固定レイアウト表による整数演算なので、暗号は完全に決定的で、同一のtext・offset・modeは常に同一のJSONを生成します。
送信内容と返却内容
encrypt はQWERTY行上で文字を右へ、decrypt は同じ絶対距離を左へシフトし、そのoffsetでの以前のencryptを反転します。検証失敗は前払い残高を消費しません。古典的な確認例:offset 1で hello をencryptすると jraap(h→j、e→r、l→a は行ラップ、o→p);同じoffsetで復号すると hello が復元され、hello!は感嘆符がサポート外のため失敗します。必須の文字列フィールド text、必須の整数フィールド offset、および encrypt または decrypt を取る任意の mode フィールドを送ってください。mode を省略すると encrypt が既定となり、最小ペイロードでも有用な処理ができます。成功時の応答は mode、元の text、指定した整数 offset、変換後の result 文字列、その length、移動したアルファベット文字数 letters_shifted、さらにクライアントがプロファイルを検証するための layout・rows・cipher ラベルをエコーします。text 欠落、offset 欠落、text が非文字列、サポート外の mode、文書化された最大長を超える文字列、1.5のような浮動小数を含む非整数offset、ラテン文字でも空白でもない文字(句読点・数字・記号)は invalid_input と、該当時はサポート外キーを示す明確な英語メッセージで失敗します。成功したAPI呼び出しの料金は公開ベースの $0.002 毎件です。
キーボードシフト暗号が実務で使われる場面
この機能は純粋なparseエンジンなので、API料金は成功1件あたり公開ベースの $0.002 で、検証失敗は残高を消費しません。
連携の活用例
軽いネタバレ難読化
クイズの答えやラベルをQWERTY上で横にずらし、後でブラウザまたはAPIの同じ契約で復号します。
技術的な質問
サポート外キーとは何ですか?
ラテン文字A–Z/a–zでも空白でもない文字です。数字、句読点、絵文字、アクセント付き文字はinvalid_inputで失敗し、課金されません。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。APIリクエストは成功1件あたり$0.002の前払いKIT残高を使い、無効入力は課金されません。