deffast_power(base, power, MOD):
result = 1while power > 0:
# If power is oddif power % 2 == 1:
result = (result * base) % MOD
# Divide the power by 2
power = power // 2# Multiply base to itself
base = (base * base) % MOD
return result
defgcd(a, b):
while a != 0:
a, b = b%a, a
return b
# calc : b^(-1) mod mdeffindModeInverse(b, m, show = True):
if gcd(m,b) != 1:
returnNone
A1, A2, A3 = 1, 0, m
B1, B2, B3 = 0, 1, b
if show:
print('-'*54)
print("|{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}|".format("Q","A1","A2","A3","B1","B2","B3"))
print("|{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}|".format("-", A1, A2, A3, B1, B2, B3))
whileTrue:
Q = A3//B3
B1,B2,B3,A1,A2,A3 = (A1-Q*B1),(A2-Q*B2),(A3-Q*B3),B1,B2,B3
if show:
print("|{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}\t{:^5}|".format(Q, A1, A2, A3, B1, B2, B3))
if B3 == 0:
returnNoneelif B3 == 1:
breakif show:
print("-"*54)
return B2%m
RSA系统参数
# RSA系统参数定义
p = 137
q = 131
n = p*q
phi_n = (p-1)*(q-1)
e = 3
d = findModeInverse(e, phi_n, False)
# RSA 加密
M = 513
C = fast_power(M, e, n) # 密文 8363# RSA解密
M_ = fast_power(C, d, n) # 解密明文
print("正常的解密结果:", M_)
# 中国剩余定理
dp = d % (p-1)
dq = d % (q-1)
Cp = C % p
Cq = C % q
qlnv = findModeInverse(q, p, False) # q对p的逆元 : 114
Mp = fast_power(Cp, dp, p) # 102
Mq = fast_power(Cq, dq, q) # 120
h = (qlnv * ((Mp - Mq) % p)) % p
_M = Mq + h*q
print("CRT的解密结果:", _M)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用