RSA加密算法记录

RSA加密原理

1、选择一对不相等且足够大的质数

p、q

2、计算 p,q 的乘积

n = p * q

3、计算 n 的欧拉函数

φ(n) = (p - 1) * (q - 1)

4、选一个与 φ(n) 互质的整数 e

1 < e < φ(n)

5、计算出 e 对于 φ(n) 的模反元素 d

d * e mod φ(n) = 1

6、公钥

KU = (e, n)

7、私钥

KR = (d, n)
步骤说明描述
1选择一对不相等且足够大的质数p、q
2计算 p,q 的乘积n = p * q
3计算 n 的欧拉函数φ(n) = (p - 1) * (q - 1)
4选一个与 φ(n) 互质的整数 ex 1 < e < φ(n)
5计算出 e 对于 φ(n) 的模反元素 dd * e mod φ(n) = 1
6公钥KU = (e, n)
7私钥KR = (d, n)

加密流程

明文 M	加密 M^e mod n = C
密文 C	解密 C^d mod n = M

例题

p = 3
q = 11
n = 3 * 11 = 33
φ(n) = (3 - 1) * (11 - 1) = 20
与 φ(n) 互质的整数 1 < e < φ(n)
e = 3
e 对于 φ(n) 的模反元素 d
d * 3 mod φ(n) = 1
d * 3 mod 20 = 1
d = 7
加密 M = 20
KU = (3, 33)
密文 C = 20^3 mod 33 = 14
解密 C = 14
KR = (7, 33)
明文 M = 14^7 mod 33 = 20

代码

import gmpy2


p = 3
q = 11
n = p * q
phi_n = (p - 1) * (q - 1)	# φ(n)
e = 3

d = gmpy2.invert(e, phi_n)
c = 14
m = pow(c, d, n)
print m			# m = 20
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值