RSA加密算法笔记
rsa 算法步骤
-
rsa的算法步骤
- 选两个质数 P、Q
- 计算欧拉函数:m = f(n) = (p-1) * (q-1)
- 随机的数e: 1 < e < m 且 e 和 m 互质
- 找一个整数d: e*d % m = 1
- (n , e)为公钥, (n,d)为私钥
- 加密解密算法(a为明文, b为密文)
- 加密:a^e % n = b,通过明文a,求出密文b
- 解密:a^d % n = b,通过密文b,求出明文a
-
问题:
- 欧拉函数是什么:
- 怎么求整数d
- 解密算法的正确性
- rsa的可靠性
欧拉函数 f(n)
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?)
如果n = 1, f(n) = 1;
如果n为质数, f(n) = n - 1 , 也就是说除了n本身,其他数都和n互质。
如果n不为质数......
有一条性质是: 如果 n 可以写成两个质数的积 n = a * b,那么f(n) = f(a) * f(b).
模反元素
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
也就是a * b % n = 1。
用来求上面rsa的d。
参考:
https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html