#68

公開鍵暗号の考え方(RSA風)

小さな数で鍵ペアを作り、公開鍵で暗号化・秘密鍵で復号する流れを体験します。

解説

公開鍵暗号では、鍵が2つ一組になります。公開鍵は誰に見せてもよく暗号化に使い、秘密鍵は本人だけが持ち復号に使います。 ここではRSAを小さな数でまねます。2つの素数 p, q から n を作り、公開鍵 e と秘密鍵 d を決めます。暗号化は m の e 乗を n で割った余り、復号は c の d 乗を n で割った余りです。 鍵が違うのに元に戻るのが鍵ペアの魔法。実際のRSAは桁が非常に大きく、素因数分解の難しさが安全性を支えています。

書き方

pow(底, 指数, 法) — 底の指数乗を法で割った余り(剰余べき乗)を返す。
・n = p*q、phi = (p-1)*(q-1) で鍵を作る。
・while (e * d) % phi != 1: で秘密鍵 d を探す。
・暗号化 pow(m, e, n)、復号 pow(c, d, n)。

書いて動かす

この回の課題

小さな素数からRSA風の鍵ペアを作り、公開鍵で暗号化・秘密鍵で復号して元に戻ることを確かめてみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

もっと本格的に使うなら

Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。