RSA是公钥密码学的经典算法之一,在1977年被Rivest, Shamir, Adleman三个人共同提出。
Ron Rivest http://theory.lcs.mit.edu/~rivest/
Adi Shamir http://www.wisdom.weizmann.ac.il/~shamir/
Len Adleman http://www.usc.edu/dept/molecular-science/
1. RSA算法基本参数
(1)是分组密码算法(区别于流密码算法)
(2)设计基于大整数分解难题
(3)明/密文分组以及公/私钥都被看作小于n的整数(n的大小通常为1024位二进制数)
(4)加/解密是模乘运算,假设某个明文分组是整数m( m<n ),则
加密: c=memodn
解密: m=cdmodn
2. 算法参数建立
step1:找素数,选取两个512bit的随机素数p,q,p!=q,计算模n和Euler函数 φ(n) (小于n且与n互素的正整数的个数)
step2:计算 n=pq , φ(n)=(p−1)(q−1)
step3:找e、d满足 ed≡1modφ(n)
选取数e,用扩展Euclid算法求数d(e要求满足 gcd