RSA 实验报告
1、RSA 整理介绍
1、1 算法过程简介
①密钥生成
选择两个大的素数 p 和 q,且 p≠q;
计算 n=p×q;
计算φ(n)=(p−1)(q−1),其中φ(n)是 n 的欧拉函数;
选择整数 e,使得 gcd(φ(n),e)=1,1<e<φ(n);
计算 d,使得 ed=1 mod φ(n),即 d 是 e 在模φ(n)下的乘法逆元;
公钥为 KU={e, n},公钥公开;私钥为 KR={d, n},私钥保密。
RSA 加密解密
②加密
加密时首先对明文进行分组,使得每个明文分组 M<n;
然后对每个明文分组 M 进行加密运算得到密文分组 C:
③解密
对密文分组进行解密的过程为:
RSA 签名
②签名
加密时首先对明文进行分组,使得每个明文分组 M<n;
然后对每个明文分组 M 进行签名运算得到密文分组 C:
③验证
对密文分组进行验证的过程为:
1、2 算法注意点
①p 与 q 必为足够大的素数,使 分析者没有办法在有效时间内将 n 分解出来。
建议选择 p 和 q 大约是 100 位的十进制素数。模数 n 的长度要求至少是 512 比
特。
②为了抵抗现有的整数分解算法,对 RSA 模 n 的素因子 p 和 q 还有如下要求:
(1)|p-q|很大,通常 p 和 q 的长度相同;
(2)p-1 和 q-1 分别含有大素因子 p1 和 q1
(3)gcd(p1-1,q1-1)应该很小。
③为了提高加密速度,通常取 e 为特定的小整数,ISO/IEC9796 中甚至允许取 e=
3。这时加密速度一般比解密速度快 10 倍以上。