🔑 鍵行列Kの設定
使用可否: -
詳細情報を表示
det(K): -
det(K) mod 26: -
gcd(det(K), 26): -
det(K)-1 mod 26: -
-
🔒 暗号化
非英字、空白、記号は無視。末尾はXでパディングされます。
-
処理ログ(ブロック計算の詳細)
🔓 復号
鍵行列のサイズによっては末尾をXでパディングします。
復号結果の末尾にXが現れた場合、パディング用のXの可能性が高いですが、元のメッセージの文字である可能性もあります。
処理ログ(ブロック計算の詳細)
📚 学びの要点
🔑 鍵の可逆性条件
逆行列が存在する(= 復号できる)ためには、以下の条件が必要です:
gcd(det(K), 26) = 1
つまり、行列式が 2 と 13 の倍数ではない 必要があります。
- 2×2 行列より 3×3 行列のほうが可逆な鍵の比率は下がる傾向
- 実装では 余因子 → 随伴 → det の逆元 の順で逆行列を計算
⚠️ 本ツールの制約
非英字の扱い
非英字・空白・記号は暗号化時に無視されます。そのため、復号結果には単語間の空白や文末のピリオドなどは含まれません。
例
"HELLO WORLD." → 処理 → "HELLOWORLD" → 暗号化 → 復号 → "HELLOWORLD"
空白とピリオドは復元されないため、人間が文脈から "HELLO WORLD." に戻す必要があります。
パディングのX
復号結果の末尾にXが現れた場合:
- 大半のケース: ブロック長を合わせるためのパディング用X
- 稀なケース: 元のメッセージに含まれていた文字X
文脈から判断する必要があります。
🎓 教育的意義
- 線形代数の応用: 行列式・余因子・随伴・逆行列を有限環 ℤ₂₆ 上で体験
- 暗号の基礎: ブロック暗号の基本概念を理解
- セキュリティの限界: 古典暗号の脆弱性(既知平文攻撃など)を学ぶ入口