本文由 @lonelyrains 出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/22069337
1至6是从阮一峰的博文(见参考链接)中抽出来的,算是自己理解这个算法的一个记录吧。
1、欧拉函数φ(n):小余等于n的正整数中,与n互质的数的个数
4、推论:随机质数p、q,p*q = n, φ(n) = (p-1)*(q-1), 随机选择一个整数e, 1 < e < φ(n),且e与φ(n)互质,计算e对于φ(n)的模反元素d,使得 ed ≡ 1 (mod φ(n))。这种条件下,如果正整数m<n且m^e≡c(mod n),一定有c^d≡m(mod n)。 【这条推论才是实际RSA应用的基础,证明见参考链接二】
5、加解密应用:
1)使用公钥(n,e)加密明文m(m<n):从m^e≡c(mod n)计算出c.
2)使用私钥(n,d)解密密文c:从c^d≡m(mod n)计算出m.
6、可靠性分析:
在只公开公钥(n,e)的情况下,计算d需要知道φ(n),继而需要知道p、q,而由p、q知道n很容易,但是n分解成p、q很难,所以p、q足够大时暂时还未被破解。
千言万语汇成一句话:p q , n = p*q , ed = 1 (mod φ(n)) , m^e ≡ c (mod n) => c^d ≡ m (mod n)
7、实际应用中的补足(Padding)和算法性能优化:
补足待补充;
优化:实际应用中,e比较小,求得的d比较大。解密时计算c^d比较慢。根据中国剩余定理,c^d mod n = c^d mod (p*q) = (c^dp mod p) *( c^dq mod q), dp = d mod (p-1) ,dq = d mod (q-1)
参考链接:
1、http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
2、http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
3、http://en.wikipedia.org/wiki/RSA_(cryptosystem)
4、http://blog.sciencenet.cn/home.php?mod=space&uid=287179&do=blog&id=391134