更新日:2024/05/01
暗号解読プロジェクト
一口に暗号解読と言っても、世の中にはたくさんの暗号体系があります。ざっとまとめると以下のようになります。矢印の数字が進んでいくほど、強固な暗号になっていきます。ここでは、もっともシンプルなシフト暗号をスタート地点として、暗号解読の糸口を探っていきます。
暗号プログラム
まず暗号の仕組みが分かっていなければ、そもそも解読なんてできないので、実際に暗号を作ってみましょう。以下はC言語による暗号プログラムで、コマンドライン上で対話的に実行するタイプです。一番右はWEBで確認できます。
暗号体系
概要
C言語ソース
鍵の例
平文の例
暗号文の例
復号結果の例
PHPスクリプト
シフト暗号、シーザー暗号(shift)
概要
ソース
-
平文
暗号
復号
WEBでおためし
アフィン暗号(affine)
概要
ソース
-
平文
暗号
復号
WEBでおためし
換字暗号(substitution)
概要
ソース
鍵
平文
暗号
復号
WEBでおためし
ヴィジュネル暗号(vigenere)
概要
ソース
-
平文
暗号
復号
WEBでおためし
ヒル暗号(hill)
概要
ソース
-
平文
暗号
復号
C言語ライブラリ
crypt.h
matrix.h
暗号解読プログラム
今のところの構想としては、いきなり高尚な解読プログラムが作れるとも思えないので、
- レベル1として、コンピュータを道具程度に扱って、主に人が解読できているかを判断するレベル
- レベル2として、コンピュータが主に活躍するけど、まだ人手が必要というレベル
- レベル3として、一から十までコンピュータが処理して、適合率を弾き出したりするレベル
と徐々に難易度を上げていく流れで考えています。
▼大学時代にこの本で暗号への理解を深めました。読み物としても面白いですよ。筆者が技術者ではなく、ジャーナリストなので読みやすいです。
- the end of this article -
まず暗号の仕組みが分かっていなければ、そもそも解読なんてできないので、実際に暗号を作ってみましょう。以下はC言語による暗号プログラムで、コマンドライン上で対話的に実行するタイプです。一番右はWEBで確認できます。
暗号体系 | 概要 | C言語ソース | 鍵の例 | 平文の例 | 暗号文の例 | 復号結果の例 | PHPスクリプト |
---|---|---|---|---|---|---|---|
シフト暗号、シーザー暗号(shift) | 概要 | ソース | - | 平文 | 暗号 | 復号 | WEBでおためし |
アフィン暗号(affine) | 概要 | ソース | - | 平文 | 暗号 | 復号 | WEBでおためし |
換字暗号(substitution) | 概要 | ソース | 鍵 | 平文 | 暗号 | 復号 | WEBでおためし |
ヴィジュネル暗号(vigenere) | 概要 | ソース | - | 平文 | 暗号 | 復号 | WEBでおためし |
ヒル暗号(hill) | 概要 | ソース | - | 平文 | 暗号 | 復号 |
C言語ライブラリ
crypt.h | matrix.h |
今のところの構想としては、いきなり高尚な解読プログラムが作れるとも思えないので、
- レベル1として、コンピュータを道具程度に扱って、主に人が解読できているかを判断するレベル
- レベル2として、コンピュータが主に活躍するけど、まだ人手が必要というレベル
- レベル3として、一から十までコンピュータが処理して、適合率を弾き出したりするレベル
▼大学時代にこの本で暗号への理解を深めました。読み物としても面白いですよ。筆者が技術者ではなく、ジャーナリストなので読みやすいです。
- the end of this article -