QWERTY座標暗号
米国式QWERTYキーボードでは、helloは2,6 1,3 2,9 2,9 1,9になります。各文字を上から数えた行と左から数えた列で表す方式で、この組を復号するとHELLOに戻ります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- hello
- 計算モード
- Encode
- 結果
- 2,6 1,3 2,9 2,9 1,9
- 長さ
- 19
- 対応付けた文字
- 5
- レイアウト
- qwerty
キーボード座標暗号は、アルファベット順に文字を回すことも、隣接キーへずらすこともしません。各文字を米国標準のQWERTY文字配列上の位置で表します。上の文字行から下へ向かう1始まりの行番号と、その行内で左から右へ向かう1始まりの列番号です。文字Hはホーム行の第6列にあるため、トークン「2,6」として符号化されます。Qは「1,1」、Mは「3,7」です。符号化は語を空白区切りのトークン列に変え、復号はトークンを読んで大文字のアルファベットを組み立てます。句中の空白はスラッシュ印に変わり、複数語の往復が可能です。
QWERTYの行と列の座標の仕組み
米国QWERTYの文字格子は、上から数える独立した3行として扱います。1行目はqwertyuiopで10列、2行目はasdfghjklで9列、3行目はzxcvbnmで7列です。列は各行の左端を1とし、ホーム行のAは2,1、Fは2,4、Lは2,9です。
符号化は入力を左から右へ辿り、各ラテン文字を固定マップで引き、行,列の形の短いトークンとして出力します。各空白は語境界を保つためにスラッシュ・トークンになり、トークンは単一空白で結合されて結果文字列になります。
復号は暗号文を空白で分割し、行,列・任意の括弧・ハイフンやコロン区切りのトークンを受け付け、有効な各対をそのキーの大文字に写し、スラッシュ・トークンを再び空白に戻します。符号化時の大小文字はマップ参照では無視されます。物理キーに大文字・小文字の別セルはないためです。
数字・句読点・絵文字・基本ラテン外の文字はこの文字専用格子に現れないため、エンジンは座標を捏造せず枠外メッセージで即失敗します。数学的にはモジュララップも鍵スケジュールもない静的表引きであり、同じ文字は常に同じ対に、同じ有効対は常に同じ文字に戻ります。固定レイアウト上の純粋な文字列と整数の処理だけなので、暗号は完全に決定的です。
経路にネットワーク呼び出し・乱数シード・壁時計の時刻はありません。本ページは物理キーボード座標のみを実装し、ポリュビオス式アルファベット方眼・隣接キーシフト・強力な暗号化は扱いません。
キーボード座標暗号が実際に使われる場面
入門暗号やキーボード配列パズルでは、アルファベット位置を数える代わりに各キーの格子住所としてメッセージを書き直す課題がよく出ます。明示的な行・列番号で符号化・復号する信頼できるオラクルは、宿題デモや自動採点を速めます。
capture-the-flagのウォーミングアップや脱出ゲームの小道具は、メモや画像に座標リストとして句を隠すことがあり、解く側は一般的な暗号解析一式ではなく、速く予測可能なQWERTYマップを求めます。サポートやコンテンツのチームは、ネタバレやクイズ回答を座標リストとして軽くぼかし、言語専用ライブラリなしで逆変換したいことがあります。
隣接キーシフト、アルファベット方眼上の古典的ポリュビオス数字対、カエサル回転、強い認証付き暗号化が必要な場合は、本キーボード座標ページを過負荷にせず、別の検索意図とランディングとして扱ってください。
活用例
授業でのQWERTY格子デモ
例語を行,列トークンとして符号化し、生徒がアルファベット計算ではなく物理キー位置を見るようにしてから、復号してワークシートを確認します。
パズル・CTF用の座標句
挑戦文字列をQWERTY座標に変えるか、印刷された対のリストを逆変換し、問題セットごとに使い捨てスクリプトを書かずに済みます。
よくある質問
キーボード座標暗号とは何ですか?
アルファベットを回したり隣接キーへずらしたりする代わりに、各文字を米国QWERTY文字配列上の行と列で置き換える対応付けです。
座標を文字にどう復号しますか?
modeをdecodeにし、Hなら2,6のように空白区切りのトークンを渡します。任意の括弧とハイフン/コロン区切りも受け付け、スラッシュは空白を表します。
枠外入力とは何ですか?
符号化ではラテン文字A–Z/a–zでも空白でもない任意の文字。復号では不正なトークン、または実在のQWERTY文字キーに落ちない行,列対です。
行と列はどう番号付けされますか?
行は上の文字行(qwertyuiop)から下へ1始まりです。列は各行内で左から右へ1始まりです。
単語の間のスペースはどうなりますか?
スペースは座標の組の間に置かれるスラッシュに変わります。復号するとスラッシュがスペースに戻るので、複数の単語からなる文もそのまま大文字で戻ります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/keyboard-coords \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/keyboard-coords", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/keyboard-coords",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/keyboard-coords", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/keyboard-coords", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "hello"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.keyboard_coords",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
符号化時にラテン文字でも空白でもない文字、復号時に実在キーに落ちない座標は、明確なinvalid_inputエラーで枠外入力として報告されます。無料のブラウザツールと有料APIは同一の純粋な同型関数を共有するため、授業デモ・パズル下書き・自動パイプラインは同じ入力で常に同じ結果に一致します。
QWERTYの行と列の座標の仕組み
復号アルファベットは安定したAPI契約のため常に大文字です。同一のtextとmodeは常に同一のJSONを生みます。
送信する内容と返ってくる結果
encodeは各文字を行,列トークンに、各空白をスラッシュに写します。decodeはそれらのトークンを読み、大文字の文字列を組み立てます。検証失敗はプリペイド残高を消費しません。定番確認は、helloを2,6・1,3・2,9・2,9・1,9の5トークンへ符号化すること、その座標列の復号でHELLOが戻ること、感嘆符付きhelloが句読点のため枠外で失敗することです。必須の文字列フィールドtextと、任意のmode(encodeまたはdecode)を送ってください。modeを省略するとencodeが既定になり、最小ペイロードでも有用です。成功時の応答はmodeと元のtextをエコーし、変換後のresult、そのlength、処理した字母数letters_mapped、デバッグ用のletter・row・col・token詳細を持つpairs配列、プロファイル確認用のlayout・rows・cipherラベルを返します。text欠落、textが文字列でないオブジェクト、未対応のmode、文書化された最大長を超える文字列、ラテン文字でも空白でもない符号化文字、不正な復号トークン、3つの文字行の外に落ちる座標はすべてinvalid_inputとなり、該当時は枠外入力を英語で明示します。成功したAPI呼び出しの料金は公開ベースの$0.002/件です。
キーボード座標暗号が実際に使われる場面
本能力は純粋なparseエンジンなので、API料金は成功件あたり公開ベースの$0.002であり、検証失敗は残高を消費しません。
連携の活用例
軽いネタバレの秘匿
クイズ回答やラベルをキーボード座標として保存し、後からブラウザまたはAPIの同じ契約で復号します。
技術的な質問
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API要求は成功件あたり$0.002のKITプリペイド残高を使い、無効入力は課金されません。