一、生成公钥、私钥
- 寻找两个不相同的大质数
随意寻找两个不相同的大质数,计算 - 求 N 的欧拉函数值
欧拉函数的定义:
是小于等于 n 的正整数中与 n 互质的数的数目。(第一次见的话肯定会觉得很奇怪,怎么还会有这么奇怪的函数(^_^)) - 计算私钥中最重要的 d
选择一个小于,并与互质的整数 e,通常取65537,求得 e 关于的模反元素 d,
模反元素的定义:
如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得。(前式等价于,由贝祖定理易知,整数 b 一定存在) - 销毁
此时我们的是公钥,是私钥。
RSA算法的安全性:已知,是否容易得到 d
- 要想知道 d,就要知道
- 要想知道,就要根据 N 算出,而大数的质数分解是目前公认的数学难题,只能暴力求解。
二、加密、解密
- 使用公钥加密, 假设明文为,则密文。
- 使用私钥解密,则明文。
三、正确性证明(证明过程使用到欧拉定理)
证明 m 经加解密后还是 m,即证明等式
- 明文 m 与 N 互质
- 明文 m 不与 N 互质
m 不与 N 互质,,都为质数。则一定有
即
易知,即,即
显然互质,
即
故,得证!
证明部分参考的博客
网友评论