rsa-crt算法带允许时间记录和可视化交互的尽可能精简的py语言实现代码

RSA-CRT (Chinese Remainder Theorem) 算法是一种用于优化 RSA 加密和解密的算法。

下面是一个使用 Python 语言实现 RSA-CRT 算法的例子,该例子包含了时间记录和可视化交互的功能:

```python import time import math

def gcd(a, b): """计算最大公约数""" while b != 0: a, b = b, a % b return a

def exgcd(a, b): """扩展欧几里得算法""" if b == 0: return (a, 1, 0) else: d, x, y = exgcd(b, a % b) return (d, y, x - (a // b) * y)

def invmod(a, n): """计算模 n 意义下 a 的逆元""" d, x, y = exgcd(a, n) if d == 1: return x % n else: raise ValueError("%d 没有逆元" % a)

def rsa_crt(c1, c2, e1, e2, n1, n2): """使用 RSA-CRT 算法解密密文""" # 计算 n1 和 n2 的最大公约数 g = gcd(n1, n2) if c1 % g != c2 % g: raise ValueError("无解")

# 计算 m1 和 m2
p = n1 // g
q = n2 // g
mp = c1 % p
mq = c2 % q

# 计算 dp 和 dq
dp = invmod(e1, (p - 1))
dq = invmod(e2, (q - 1))

# 计算 m
t = (q * invmod(q, p) * mp + p * invmod(p, q) * mq) % (p * q)
return t

测试

加密参数

n1 = 3233 n2 = 5267 e1 = 17 e2 = 3187

要加密的明文

m = 12345

记录开始时间

start = time.time()

加密

c1 = pow(m, e1, n1) c2 = pow(m, e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值