Day12 - 生成AIで作るセキュリティツール100
上杉暗号ツール(Uesugi Cipher Tool) は、字変四十八バージョンの上杉暗号を体験するWebツールです。
このツールは、戦国時代に宇佐美定行が記したとされる「字変四十八」方式に基づく換字式暗号を、いろは順の7×7マトリクスで再現しています。 各文字を「行番号×列番号」で暗号化・復号し、視覚的に理解できるインタフェースを提供します。
👉 https://ipusiron.github.io/uesugi-cipher/
以下は実際の画面例です。
初期画面
- 「字変四十八」方式に基づく日本語換字暗号を再現
- 7×7のいろは順マトリクスによる座標変換
- 右上スタートの正確な座標系
- 暗号化・復号の双方向変換
- アラビア数字(5-7)と漢数字(五七)の両対応
- 未収録文字や記号はそのまま出力
- 濁点・半濁点・促音の自動変換機能あり
- 暗号表に行・列番号を表示し視認性を向上
- ブラウザだけで動作、インストール不要
- 🎨 使用文字のハイライト(金色グラデーション + パルスアニメーション)
- 🏯 和風モダンなデザイン
- 📱 レスポンシブ対応
- 📋 結果のワンクリックコピー(純粋な結果のみ)
⚠️ 入力検証と分かりやすいエラーメッセージ- 🔄 実行ごとのハイライトリセット
この暗号は、上杉謙信の家臣・宇佐美定行が軍事用に記した『武経要略』に由来する「字変四十八」方式がベースです。 いろは48文字を7×7の表に並べ、文字を座標化するという仕組みは、古代ギリシャのポリュビオス暗号に類似しており、日本における歴史的な暗号文化を象徴しています。
- いろは歌の正確な配置表示
- 暗号化・復号過程の視覚化
- 古典暗号の理解促進
- 「てきみゆ」→「5-7 6-3 6-6 6-4」(アラビア数字の場合) or 「五七 六三 六六 六四」(漢数字の場合)
- 「ひみつのてがみ」→「7-2 6-6 3-5 4-5 5-7 2-7 6-6」 or 「七二 六六 三五 四五 五七 二七 六六」
- 使用した文字が表で美しく光る ✨
uesugi-cipher/
├── README.md # プロジェクトの説明(このファイル)
├── LICENSE # MITライセンス
├── docs/
│ └── index.html # 字変四十八の上杉暗号ツール本体(Web UI)
├── assets/
│ └── screenshot.png # スクリーンショット画像
└── .github/
└── workflows/
└── deploy.yml # GitHub Pages 用の自動デプロイ設定
- 「暗号史の中の日本~戦国時代の『上杉暗号』~」(HH News & Reports)では、上杉謙信の家臣・宇佐美定行が『武経要略』に記した「字変四十八」として紹介されています。これは7×7の仮名表を使った換字式暗号で、語句の置き換えに数字を用いる形式とされています。
- 漫画・アニメ『Dr. Stone: Science Future』では、上杉暗号に相当する方式がラジオ通信で使用され、敵に内容を傍受されにくくする意図で登場しています
- 学研出版『暗号サバイバル学園』の児童向けノベルシリーズでは、シーザー暗号やモールス信号と並んで、「上杉謙信の暗号」も解読対象として登場し、子どもたちが謎解きしながら学べる構成になっています。
暗号タイプ: 単換字暗号(monoalphabetic substitution cipher)
- 各ひらがな文字が固定の座標ペア(例:「て」→「5-7」)に1対1対応
- 文字の置換関数が一定で変化しない
日本語の文字頻度(例):
「の」「に」「は」「を」→ 高頻度
「ゑ」「ゐ」→ 現代では使用頻度極低
暗号文でも同じパターンが残る:
頻出する座標 → 「の」「に」「は」の可能性大
- 同一文字の反復:「ここ」→「4-3 4-3」
- 語尾パターン:「です」「ます」の座標パターン
- 助詞の固定パターン:「は」「が」「を」の座標
- 鍵空間: いろは歌の配置は固定 → 実質的に鍵なし
- 鍵ありバージョンとしては、表の行・列の番号を入れ替える方法、番号の代わりに和歌を使う方法などもある。
- 座標の読み方(列-行 vs 行-列)程度の違いしかない
暗号文: 「5-7 6-3 6-6 6-4」
↓
1. 4文字の短い単語を推測
2. 「○○○○」パターンの日本語を辞書検索
3. 「てきみゆ」「ひみつの」等の候補
4. 1つでも当たれば4文字分の対応表が判明
1. 頻度分析で「の」「に」「は」の座標を特定
2. パターン分析で語尾「ます」「です」を特定
3. 徐々に対応表を復元
4. 残りの文字を辞書攻撃で確定
いろは歌には濁点・半濁点・促音が含まれていないため、現代日本語の「が」「ぷ」「っ」などの文字はそのままでは暗号化できません。 本ツールでは、これらの文字を自動的に対応する清音に変換してから暗号化を行います。
濁点文字 | 変換後 | 濁点文字 | 変換後 | 濁点文字 | 変換後 |
---|---|---|---|---|---|
が | か | ざ | さ | だ | た |
ぎ | き | じ | し | ぢ | ち |
ぐ | く | ず | す | づ | つ |
げ | け | ぜ | せ | で | て |
ご | こ | ぞ | そ | ど | と |
濁点文字 | 変換後 |
---|---|
ば | は |
び | ひ |
ぶ | ふ |
べ | へ |
ぼ | ほ |
半濁点文字 | 変換後 |
---|---|
ぱ | は |
ぴ | ひ |
ぷ | ふ |
ぺ | へ |
ぽ | ほ |
文字 | 変換後 | 説明 |
---|---|---|
っ | つ | 促音(小さい「つ」) |
ー | (削除) | 長音記号 |
ゃ | や | 小さい「や」 |
ゅ | ゆ | 小さい「ゆ」 |
ょ | よ | 小さい「よ」 |
ぁ | あ | 小さい「あ」 |
ぃ | い | 小さい「い」 |
ぅ | う | 小さい「う」 |
ぇ | え | 小さい「え」 |
ぉ | お | 小さい「お」 |
入力: ありがとう
変換: ありかとう
暗号化結果: 2-1 1-5 2-6 2-4 3-1 3-4
変換通知: 🔄 文字変換: 「が」→「か」
入力: がんばって
変換: かんはつて
暗号化結果: 2-4 5-1 2-6 1-3 1-7
変換通知: 🔄 文字変換: 「が」→「か」, 「ば」→「は」, 「っ」→「つ」
入力: ぷるぷる
変換: ふるふる
暗号化結果: 3-2 3-5 3-2 3-5
変換通知: 🔄 文字変換: 「ぷ」→「ふ」, 「ぷ」→「ふ」
- 復号結果は変換後の清音で表示されます
- 元の濁点・半濁点は復元されません
- 例:「がんばって」→暗号化→復号→「かんはつて」
一部の文字変換により、意味が変わる場合があります:
元の文字 | 変換後 | 影響例 |
---|---|---|
「時間」→「しかん」 | 「じかん」→「しかん」 | 「歯科ん」のような音に |
「気持ち」→「きもち」 | 「きもち」→「きもち」 | 変化なし |
「頑張って」→「かんはつて」 | 「がんばって」→「かんはつて」 | 意味が不明瞭に |
- 学習・体験目的: 文字変換機能により現代日本語も体験可能
- 歴史的再現: より正確な体験には、変換が発生しない文章の使用を推奨
- 重要文書: 現代暗号の使用を強く推奨
✅ 対応済み
- 基本的な濁点・半濁点(か行、さ行、た行、は行)
- 促音(っ)
- 長音(ー)
- 拗音・小書き文字(ゃ、ゅ、ょ、ぁ、ぃ、ぅ、ぇ、ぉ)
❌ 未対応
- カタカナ
- 漢字
- 英数字
- 記号類
未対応文字が含まれる場合は、暗号化できない文字として警告表示されます。
MIT License - 詳細は LICENSE ファイルを参照してください。
本ツールは、「生成AIで作るセキュリティツール100」プロジェクトの一環として開発されました。 このプロジェクトでは、AIの支援を活用しながら、セキュリティに関連するさまざまなツールを100日間にわたり制作・公開していく取り組みを行っています。
プロジェクトの詳細や他のツールについては、以下のページをご覧ください。