6.RSA算法及其数字签名
6.1 RSA算法
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamir和Len Adleman在美国麻省理工学院开发的。RSA取名来自开发者的名字。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分不容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
6.2 RSA数字签名
首先产生密钥,过程如下:
(1)随机产生两个等长度为K/2位的素数P和Q
(2)然后计算公钥publicKey=P*Q;(publicKey 是k位的长度)
(3)随机产生一个加密密钥keyE, 2<=keyE<=中(n)-1其GCD(keyE,中(n))=1;注意这是保证解密密钥keyE *keyD mod中(n)=1 有解的充要条件,中(n)称为 n的欧拉函数,值为:中(n)=(P-1)*(Q-1)
(4)求解解密密钥keyD=keyE-1 mod (n) ,keyE-1 为解密密钥keyD的逆元,此公式原方程为(keyE*keyD mod (n)=1)
由此公钥,加密密钥,解密密钥全部产生。其次对明文加密或对密文进行解密