RSA算法流程

一,密钥的产生 
① 选两个保密的大素数 p 和 q(典型值为1024位)。 
② 计算 n=p×q,φ(n)=(p-1)(q-1)其, 中 φ(n)是 n 的欧拉函数值。 
③ 选一整数 e,满足 1 ,且 gcd(φ(n),e)=1。 
④ 计算 d,满足 d·e≡1 mod φ(n),即 d 是 e 在模 φ(n)下的乘法逆元,因 e 与 φ(n)互素, 由模运算可知,它的乘法逆元一定存在。 
⑤ 以{e,n}为公开钥,{d,n}为秘密钥。 
二,加密 
① 将明文看成比特串,将明文划分成k位的块P即可,这里k是满足2*k<n的最大整数。 
② 对每个数据块P,计算C=P^(mod n),C即为P的密文。
三,解密

对每个密文块c,计算P+C^d(mod n),P即为明文

图1 算法流程图

db772941a11c4543bb96634e7f83140f.png

图2 加密流程

d2089e37fd004155bff54bb8fd2a7b6a.png

 图3 解密流程6aad91d1adce4ac69c24dbd3502d7ce4.png

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. RSA算法流程 RSA算法是一种非对称加密算法,其流程如下: 1.1. 密钥生成 选择两个不同的大素数p和q,计算它们的乘积n=pq,然后计算欧拉函数φ(n)=(p-1)(q-1)。 选择一个小于φ(n)且与φ(n)互质的整数e作为公钥,计算与e关于模φ(n)的乘法逆元d,即满足ed≡1(mod φ(n))的最小正整数d,d即为私钥。 将n和e作为公钥,n和d作为私钥。 1.2. 加密 对于明文m,将其转换为整数M,然后计算密文c,c≡M^e(mod n)。 1.3. 解密 对于密文c,将其解密得到明文m,m≡c^d(mod n)。 2. 计算过程 已知p=7,q=11,e=13,求私钥d和明文“e”的密文c。 2.1. 计算n和φ(n) n=pq=7×11=77 φ(n)=(p-1)(q-1)=6×10=60 2.2. 计算d 根据ed≡1(mod φ(n)),可以列出如下的同余方程: 13d≡1(mod 60) 将13和60做质因数分解: 60=2^2×3×5 因为13和60互质,所以gcd(13,60)=1。因此,可以通过扩展欧几里得算法求出13关于60的乘法逆元d,即: 13×37≡1(mod 60) 因此,d=37。 2.3. 加密 将明文“e”转换为整数,即M=5,然后计算密文c: c≡5^13(mod 77) 首先计算5^2≡25(mod 77),然后通过平方乘法算法计算5^13: 5^13=(5^8×5^4×5)mod 77 =(5^2)^4×5^4×5mod 77 =25^4×625mod 77 =25^4×38mod 77 =25^2×25^2×38mod 77 =34×34×38mod 77 =62 因此,明文“e”的密文为c=62。 注意:实际应用中,RSA算法使用的素数p和q通常至少为1024位,e通常选择65537或者3,计算过程较为复杂,需要使用计算机程序进行计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值