Vigenère暗号エンコード・デコード
「Attack at dawn」を鍵 LEMON で暗号化すると「Lxfopv ef rnhr」になり、同じ鍵で元に戻せます。文字ごとに繰り返す鍵から別々のシーザーずらしを受け、大文字・小文字は保たれ、空白や記号は動きません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Attack at dawn
- 鍵
- LEMON
- 計算モード
- encrypt
- 結果
- Lxfopv ef rnhr
- エンコーディング
- vigenere
- 鍵の文字
- LEMON
- 鍵の長さ
- 5
このVigenère暗号ツールは、繰り返すキーワードを使って各文字ごとに異なるシーザーシフトを選ぶ古典的な多表式置換でテキストを暗号化・復号します。単一の固定シーザーオフセットとは異なり、鍵ストリームはキーワードをたどって進むため、同じ平文の文字でも位置に応じて異なる暗号文の文字にマッピングされます。これが、教室のデモやパズルの設計におけるこの方式の歴史的な強みです。移動するのはアルファベットの文字のみです。各A-Zの文字は、26文字のリング上のモジュラー算術で対応する鍵の文字によってシフトされ、大文字小文字は保持され、スペース、数字、句読点、その他の記号は鍵のステップを消費せずに通過します。標準的な検証例は、鍵LEMONの下でのAttack at dawnが既知の暗号文になり、同じキーワードで復号すると元に戻るというものです。
Vigenère暗号とは何か、そしてこのツールが返す内容
Vigenère暗号は、26文字のラテンアルファベット上の多表式置換です。各文字がAでゼロ、Zで25までのシーザーシフトをそれぞれ定義するキーワードを指定します。平文の文字は順番に変換されます。
1文字目は鍵の1文字目を使い、2文字目は次の文字を使い、キーワードが終わると再び先頭に折り返します。暗号化は鍵のオフセットを26で割った余りを加算します。復号は同じモジュラーラップでそれを減算するため、同じキーワードが使われる場合、この2つの操作は正確な逆演算になります。
文字以外は決して変化せず、鍵のインデックスを進めることもないため、スクランブルされた文字の周りでフレーズの間隔と句読点が読みやすいまま保たれます。このページは常に、大文字小文字を保持し、ロケール間でずれる可能性のある任意のアルファベットテーブルを使わない、この教科書の規則を使います。
ストリーミング経路も、ROT13や固定シーザーへのサイレントなフォールバックもありません。
Vigenère暗号がレッスン・パズル・テストフィクスチャで役立つ場面
開発者や教育者は、キャプチャー・ザ・フラッグのウォームアップ、古典的な暗号学に関する教科書の章、そして繰り返すキーワードがKasiski試験によって最終的に構造を漏らす理由を示す軽量なデモでVigenère暗号に出会います。
フロントエンドチームは、独自のアルファベットを発明することなく、スクリーンショット用にサンプルのフレーズをスクランブルし、同じ鍵の下でdecryptを使って復元できます。そこでは学生が正しいキーワードを適用して次のステップを解除しなければなりません。
品質エンジニアは、Vigenère対応を主張するミドルウェアが単一のシーザーシフトにサイレントに切り替わることがないよう、契約テストのために決定的な暗号化・復号のペアを生成します。コンテストの主催者は、間隔の規則を変えたり大文字のみの出力を強制したりする不透明なウェブおもちゃに頼ることなく、手頃な英語のフレーズについて模範解答をあらかじめ計算します。
プロダクトや教育向けのツールは、学習者が暗号文を貼り付け、UIが文書化されたキーワードの下で復元された平文を表示しなければならないときにこの変換を使います。このページでの計算はすべてブラウザ内で完結します。
無料で決定的なテキストツールの小さなラボを構築する際は他の古典的な符号化ヘルパーと組み合わせ、Vigenère暗号を現代の認証付き暗号の代用として決して扱わないでください。
活用例
CTFと古典暗号の練習
パズル、教室、キャプチャー・ザ・フラッグのウォームアップ向けに、キーワード式の多表式フレーズを暗号化・復号します。
暗号史の授業
繰り返し鍵の換字、大文字小文字を保持する変換、文字以外が鍵ストリームを進めるべきでない理由を実演できます。
よくある質問
Vigenère式のメッセージをどう復号しますか?
暗号文をtextとして、同じキーワードをkeyとして送信し、modeをdecrypt(またはdec、decode、d)に設定してください。modeを省略した場合、既定は暗号化です。
鍵に文字がない場合はどうなりますか?
キーワードには少なくとも1つのA-Zの文字が含まれなければならず、純粋な数字や記号は拒否されます。
どの文字がシフトされますか?
大文字小文字を問わずA-Zのアルファベットの文字のみです。スペース、数字、句読点、その他の記号はそのまま通過し、鍵を進めません。
Vigenère暗号は本物の秘密にとって安全ですか?
いいえ。 これは古典的な教育用暗号です。本物の機密性にはAES-GCMのような現代の認証付き暗号を使ってください。
同じ文字が違う文字に変わるのはなぜですか?
文字ごとに、繰り返される鍵の次の文字の分だけずらすためです。LEMON では「Attack at dawn」の3つの a が L、e、n と別々の文字になります。これが固定のシーザー暗号との違いです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/vigenere \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Attack at dawn","key":"LEMON"}'const res = await fetch("https://api.kit.forhosting.com/enc/vigenere", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Attack at dawn",
"key": "LEMON"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/vigenere",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Attack at dawn",
"key": "LEMON"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/vigenere", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Attack at dawn","key":"LEMON"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Attack at dawn","key":"LEMON"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/vigenere", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Attack at dawn",
"key": "LEMON"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.vigenere",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
CTFのウォームアップ、暗号史の授業、可逆パズルのワークシートにはブラウザで無料にご利用いただき、パイプラインがCIやバックエンドサービスで再現可能なVigenère変換を必要とする場合は、成功したリクエストごとに$0.002のAPIをご利用ください。
Vigenère暗号とは何か、そしてこのツールが返す内容
JSONレスポンスには、変換された文字列を表すresult、vigenereに固定されたencoding、encryptまたはdecryptに設定されたmode、キーワードから抽出された正規化された大文字の文字ストリームを示すkey_letters、key_length、変換が長さを保つため一致するinput_lengthとoutput_length、実際に移動した文字数を数えるshifted_chars、文書化やテストのためにモジュラーマッピングを再度述べる式の文字列が含まれます。空でないtextと少なくとも1文字を含むキーワードを指定するか、そうでなければinvalid_inputでリクエストが失敗するかのいずれかです。AES、ROT47、Base64、モールス信号が必要な場合はそれぞれの専用エンドポイントをご利用ください。このランディングページは、暗号史の章やCTFのウォームアップがすでに説明している古典的なVigenèreキーワード契約のみに答えます。
テキスト・鍵・モードの読み取り方法と結果を再現可能に保つ仕組み
modeは省略時にencryptが既定となり、encryptにはenc、encode、e、decryptにはdec、decode、dといった短い別名も受け付けます。それ以外の文字列は検証に失敗します。優先されるペイロードフィールドは、メッセージを表すtext、キーワードを表すkey、encryptまたはdecryptを表す任意のmodeです。textはinput、value、s、message、plaintext、ciphertextといった別名を受け付けるため、フォームやSDKクライアントは既存のカラム名を再利用できます。keyはkeyword、k、password、passphraseを受け付けます。鍵の中のアルファベットの文字のみが保持され大文字化されてkey_lettersになり、鍵の中の数字と記号は無視されます。そのフィルタの後に文字が1つも残らない場合、エンジンは、キーワードには少なくとも1つのA-Zの文字が含まれなければならないことを示す明確なメッセージとともにinvalid_inputでリクエストを拒否します。textの欠落、空のtext、文字列以外の型、未知のモードはすべてinvalid_inputを発生させるため、空のフォームが成功した無操作のように見えることはありません。すべての文字は固定のモジュラーマップで処理され、鍵のインデックスは文字でのみ進むため、同じキーワードで暗号化してから復号すると常に元のペイロードが復元されます。自動化されたパイプライン内で多表式ストリームを自前で再実装することなく同一の数学的結果が必要な場合は、このページの無料ブラウザ実行と有料APIを組み合わせてご利用ください。無効な入力はinvalid_inputを返し課金されないため、検証は安価なままであり、成功した変換は固定の項目価格のままです。
Vigenère暗号がレッスン・パズル・テストフィクスチャで役立つ場面
バックエンドサービスは、パズルAPIや教育用サンドボックス向けの短い課題文字列をエンコードします。API経由では成功した検索1件につき$0.002がかかり、検証に失敗したリクエストは課金されず、レスポンスが返された後は何も保存されません。この無料のインタラクティブな探索と、同一結果を返す有料APIという分割は、KITのtier-Aカタログの他のツールと同様であり、教室でのデモから自動化パイプラインへ、変換された結果を変えることなく移行できます。
連携の活用例
決定的なCIフィクスチャ
ユニットテスト、ゴールデンファイル、契約チェック向けに再現可能なVigenère式の暗号文と平文のペアを生成できます。
技術的な質問
Vigenère暗号ツールの料金はいくらですか?
このページのブラウザ版は無料です。API経由では成功したリクエストごとに$0.002がかかり、無効な入力には課金されません。