您的位置:首页 > 其它

RSA 加密计算

2015-03-08 01:15 120 查看


算法描述




选择一对不同的、足够大的素数p,q。
计算n=pq。
计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。
找一个与f(n)互质的数e,且1<e<f(n)。
计算d,使得d*e≡1 mod f(n)。这个公式也可以表达为d ≡e-1 mod f(n)。
公钥KU=(e,n),私钥KR=(d,n)。
加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:C≡Me(mod n)。
解密过程为:M≡Cd(mod n)。


计算示例


计算密钥

p,q取两个不相同的素数,这里令p=3,q=11,得出n=p×q=3×11=33;

f(n)=(p-1)(q-1)=2×10=20;

取e=3,(3与20互质)则e×d≡1 mod f(n),即3×d≡1 mod 20。

通过试算我们找到,当d=7时,e×d≡1 mod f(n)同余等式成立。因此,可令d=7。

从而我们可以设计出一对公私密钥

加密密钥(公钥)为:KU =(e,n)=(3,33)

解密密钥(私钥)为:KR =(d,n)=(7,33)。


加密计算

按照字母表顺序把字母转化为数字,单词”key“变为11,05,25。

用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由C≡Me(mod n)得:

C1=(M1)e (mod n)=113 (mod 33)=11 

C2=(M2)e (mod n)=053 (mod 33)=31 

C3=(M3)e (mod n)=253 (mod 33)=16 

得到加密以后的密文信息为:11,31,16


解密计算

用户B收到密文,若将其解密,只需要计算M≡Cd(mod n)即:

M1=(C1)d (mod n)=117 (mod 33)=11 

M2=(C2)d (mod n)=317 (mod 33)=05 

M3=(C3)d (mod n)=167 (mod 33)=25 

用户B得到明文信息为:11,05,25。根据编码表将其转换为英文,即可得到恢复后的原文“key“。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: