

1. 密钥的产生
随机选择两个大素数 p, q
计算 n=p×q
计算秘密的欧拉函数 φ(n)=(p-1)(q-1)
选择 e使得1<e<φ(n),且gcd(e, φ(n))=1
解下列方程求出 d
ed ≡1 mod φ(n), 且 0≤d≤n
公开公钥: PU={e, N}
保存私钥:PR={d, p, q}
2. 加密过程
加密时明文以分组为单位进行加密,每个分组m的二进制值均小于n,对明文分组m作加密运算:
c=me mod n, 且0≤m<n
3.解密过程
密文解密m=cd mod n
4. 签名过程
计算签名 s=md mod n
5.签名验证过程
签名验证m=se mod n
例4.1选择素数: p=47 和 q=71。
计算 n = pq =47×71=3337,φ (n)=(p–1)(q-1)=46×70=3220。
选择e:使gcd(e, 3220)=1,选取e=79;决定d:de≡1 mod 3220,得d =1019
公开公钥 {79, 3337},保存私钥 {1019,47,71};
假设消息为 M = 6882326879666683,进行分组,分组的位数比n要小,我们选取M1 = 688,M2 = 232,M3 = 687,M4 = 966,M5 =668,M6 =003。
M1的密文为C1 = 68879 mod 3337 = 1570,继续进行类似计算,可得到最终密文为
C =1570275620912276158
解密时计算M1 = 15701019 mod 3337 = 688,类似可以求出其他明文。
| 各省软考办 | ||||||||||