RSA加密算法笔记

rsa 算法步骤

  1. rsa的算法步骤

    1. 选两个质数 P、Q
    2. 计算欧拉函数:m = f(n) = (p-1) * (q-1)
    3. 随机的数e: 1 < e < m 且 e 和 m 互质
    4. 找一个整数d: e*d % m = 1
    5. (n , e)为公钥, (n,d)为私钥
    6. 加密解密算法(a为明文, b为密文)
      1. 加密:a^e % n = b,通过明文a,求出密文b
      2. 解密:a^d % n = b,通过密文b,求出明文a
  2. 问题:

    1. 欧拉函数是什么:
    2. 怎么求整数d
    3. 解密算法的正确性
    4. 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

posted @ 2020-04-21 17:31  少年留不住  阅读(169)  评论(0)    收藏  举报