python实现rsa数据加密_用Python实现RSA加密

过去几天我一直在尝试用Python实现RSA算法。我的代码适用于较小的素数(至少可以达到前100万个素数)。然而,当尝试使用4900万到5000万分之一时,我的代码崩溃并给出了错误的结果。在

例如,当使用素数11和17作为起始素数时,我得到以下密钥:public:(3187)和private:(107187)。用这个加密数字50,密文是84,然后解密回50。在

然而,当使用质数961752619和961752931来加密数字50时,我得到781250000000,解密后得到482883073917854018。在

我用后一对素数尝试了前50000个数字,但没有一个返回正确的值。显然这里出了点问题,但我不知道是什么。我已经在我的代码中加入了a pastebin link,我也把代码粘贴在帖子下面。在def gcd(a, b):

if b > a:

if b % a == 0:

return a

else:

return gcd(b % a, a)

else:

if a % b == 0:

return b

else:

return gcd(b, a % b)

def find_d(phi_n,e):

k = 1

mod0 = False

while not mod0:

d = (k*phi_n+1)/e

if(d % 1 == 0):

return d

k+=1

def find_e(phi_n):

e = 3

while True:

if not gcd(e,phi_n) == 1:

e+=2

else:

return e

def generate_keys(p1,p2):

n = p1*p2

phi_n = (p1-1)*(p2-1)

e = find_e(phi_n)

d = int(find_d(phi_n,e))

return ((e,n),(d,n))

def endecrypt(key,m):

return pow(m,key[0],key[1])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值