このページは教養原論(数理の世界--「現象の数理」「数理解析と社会」)の授業用のページです。
このページの機能はJavaScriptが有効なブラウザーで利用できます。このページが動作しないときはブラウザーでJavaScriptを使うように設定して下さい。
セキュリティ上の問題からJavaScriptを使用しない設定にしていた方は、このページを利用後は忘れずに設定を戻すようにしてください。
(普段はOFFでどうしても必要なときだけONにすることをお勧めします。)
変更の仕方については「JavaScriptを有効にしてください」を参考にして下さい。JavaScriptを有効にすることの危険性については「ActiveX, JavaScriptの危険性」か「Webクライアント」を見て下さい。“JavaScriptを有効にする”って何?というかたは「親子で学ぶインターネット入門:FAQ」を参考にしてください。
授業で使用したものに一部手直しをしました。
2003.1.28
2013.9.6
2014.8.20
2015.7.27(関数を一部書き換えかけたままだったものを元に戻しました。)
最大公約数の計算
与えられた正整数aとbの最大公約数を計算する。
ax+by=gcd(a,b)をみたす整数xとyの計算
与えられた正整数aとbに対し、ax+by=gcd(a,b)をみたす整数xとyを計算する。
RSA暗号の鍵生成手順
(1)相異なる素数pとqを選ぶ。
次のxに正整数を代入して計算すると、xより大きい素数のなかで最小のものを計算します。
同じ値の場合はx自身が素数です。選んだ素数を使う場合は下のp,qのボタンをクリックして下さい。
これを利用して相異なる二つの素数pとqを選びます。(暗号化と復号化の演習をするときは3から4桁程度で選んでください。)
(2)n=p*qとφ(n)=(p-1)*(q-1)を計算する。
nを素因数分解するのは時間がかかる(時間がかかるアルゴリズムしか知られていない)から、p,qの値を求めてからφ(n)の値を計算するのは時間がかかる。上で求めたnを逆に二つの素数に分解する計算をする場合はnのボタンをクリックして、計算ボタンをクリックします。
(3)1 < e < n となるe で、φ(n)とは互いに素な数を選ぶ。φ(n)の約数ではない小さな素数を選べば良い。
(4)nとeを公開する。
(5)ed≡1(mod φ(n))をみたす整数d(0 < d <φ(n))を求める。
暗号化と復号化
(6) 平文をコード化した数をMとする。Mはn未満の整数。nより大きいときはもとの文を分割して考える。C=Memod nを計算して送信する。
(上で計算した公開鍵e,nを使うときはe,nの値はそのままでかまいません。入力し直すときはクリアしてください。)
(7)受信した暗号CからCdmod nを計算すると、Mが得られる。
(上で計算した公開鍵nと暗号鍵dを使うときはd,nの値はそのままでかまいません。入力し直すときはクリアしてください。
上の暗号Cの値を使う場合は右のCのボタンをクリックして下さい。)
暗号化の具体例
ここではアルファベットの小文字と“スペース”のみからなる文字列をRSA暗号を用いて暗号化や復号化を行う(ブロック暗号のECBモードの)例をあげます。
まずアルファベットの小文字は、"a"=11, "b"=12, "c"=13,...,"z"=36, " "=37として
それぞれ二桁の数に対応させ、さらに与えられた文字列を二文字ずつ四桁の数として
それぞれ暗号化することにします。例えば、"secret"は"s"=29, "e"=15, "c"=13, "r"=28, "e"=15, "t"=30より"secret"=291513281530となりますが、これを"se"=2915、"cr"=1328、"et"=1530とわけてそれぞれ暗号化します。なお、このプログラムは練習用で、暗号化に用いる素数はあまり大きな数は使わない
(三桁程度)ことを前提にしています。さらに小さすぎてもいけません。n=pqが5桁以上になるようにしてください。
以下の変換を実行するには、上の暗号化と復号化で公開鍵と秘密鍵を作成しておく必要があります。とりあえずどのように働くかを見るだけなら下の試行ボタンをクリックすると、p=347,q=89,n=30883,e=13,d=14053 で実行します。
このページへの質問は
までどうぞ。