RSA 加密计算

算法描述

Rsa alg.jpg

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值