RSA暗号と署名

RSA暗号と署名
4ADM3126 喜田 雄一
はじめに

RSAのフォルダを作成して今日の資料、課題を
そこにコピーしてください

cp ~jyeff/Java/RSA/* ~自分のID/Java/RSA
流れ
①
②
③
RSAの復習
BigInteger
演習問題
RSA
BigInteger
150~300桁の計算
 素数の生成


本格的な暗号計算ができる!
RSAkeyGen.javaの概要

ランダムに鍵を生成するプログラム
class RSAkeyGen{
public static void main(String[] args){
変数の宣言
鍵の生成
暗号化
復号化
}
}
鍵の生成①
素数 p、q
9
10
p = new BigInteger( bit , k , rnd );
q = new BigInteger( bit , k , rnd );
5 10 Random()
n=p×q
⑫
n = p.multiply( q );
鍵の生成②
l=(p-1)*(q–1)
⑬
l = p .subtract(Biginteger.ONE)
⑭
.multiply( qq .subtract(Biginteger. ONE ))
整数の1
鍵の生成③
e=3 (lと互いに素、e<l)
⑮
e = BigInteger.valueOf( 3l );
d=e^(-1)modl
⑯
d = e .modInverse( l );
暗号化、複合化
平文
⑱
m = new BigInteger( bit
bit, rnd ).mod( n
n );
暗号化 c = m^e mod n
⑲
c = m .modPow( e , nn );
復号化
⑳
m2 = cc .modPow( d , n );
コンストラクタ、メソッドまとめ
BigInteger( x , 10 , rnd )
x ビットの素数
x.multiply( y )
x*y
x.subtract( y )
x–y
BigInteger.valueOf( x )
整数値 x
x.modInverse( z )
x ^ (-1)mod z
x.modPow( y , z )
x ^ y mod z
演習 RSA_JCE.java

RSA_JCE.javaを改良し、暗号化に使用した
秘密鍵とペアの公開鍵以外では、複合化でき
ないことを確認せよ
RSA_JCE.java

パッケージを利用した暗号化と複合化
import.java.security.*;
import.javax.cypto.*;
class RSA_JCE{
public static void main(String[] args){
鍵の生成
暗号化
復号化
}
}