RSA算法过程以及正确性证明

一、生成公钥、私钥

  1. 寻找两个不相同的大质数
    随意寻找两个不相同的大质数,计算
  2. 求 N 的欧拉函数值

    欧拉函数的定义:
    是小于等于 n 的正整数中与 n 互质的数的数目。(第一次见的话肯定会觉得很奇怪,怎么还会有这么奇怪的函数(^_^))
  3. 计算私钥中最重要的 d
    选择一个小于,并与互质的整数 e,通常取65537,求得 e 关于的模反元素 d,
    模反元素的定义:
    如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得。(前式等价于,由贝祖定理易知,整数 b 一定存在)
  4. 销毁
    此时我们的是公钥,是私钥。

RSA算法的安全性:已知,是否容易得到 d

  1. 要想知道 d,就要知道
  2. 要想知道,就要根据 N 算出,而大数的质数分解是目前公认的数学难题,只能暴力求解。

二、加密、解密

  1. 使用公钥加密, 假设明文为,则密文。
  2. 使用私钥解密,则明文。

三、正确性证明(证明过程使用到欧拉定理)

证明 m 经加解密后还是 m,即证明等式

  1. 明文 m 与 N 互质





  2. 明文 m 不与 N 互质
    m 不与 N 互质,,都为质数。则一定有







    易知,即,即
    显然互质,



    故,得证!
    证明部分参考的博客

你可能感兴趣的:(RSA算法过程以及正确性证明)