pythonで公開鍵暗号を実装する

pythonで公開鍵暗号を実装する

前回は公開鍵暗号について簡単にまとめました。
今回はpythonで公開鍵暗号を実装してみたいと思います。
公開鍵と秘密鍵を作り、暗号化と復号化のテストという流れになります。
実際公開鍵と秘密鍵を作ることができればほぼ終わりですね。

コンテンツ


実装

早速プログラムを。
まずはエントリーポイントとなる部分から。

そしてこちらが素数や鍵を作るにあたって助けとなる便利な関数群です。

プログラムの流れとしては前回まとめた行程通りにほぼ動いていると思います。
ただ手間がかかるところとして素数を求める部分とモジュラ逆数を求める部分ですかね。

素数はミラーラビン素数判定法というアルゴリズムで求めています。
こちらは確率的素数判定法と呼ばれているらしく、絶対ではないが高確率で素数を見つけることができるものらしいです。

公開鍵暗号についての記事なので数学的な背景にはあまり深入りしないようにしたいと思います。
こんな感じで実行します。

ファイル名を指定すると作られるファイルの名前が、
private_{指定されたファイル名} <-秘密鍵
public_{指定されたファイル名} <-公開鍵
になります

動作確認

実際に作成した鍵で暗号化と復号化をしてみましょう。
だいたいこんなプログラムになりますかね

正しく復号化されていれば成功です。
おそらく問題ないかと思います。

今回は稚拙ながら公開鍵暗号をプログラムしました。
機会があったら他の暗号方式にも触れてみたいと思います