我一直试图为一个输入信息(是一个数字)创建一个基本的加密解密代码。然而我的解密代码并没有产生信息。 e的值被选择为19(它很小,因为它是一个概念证明),两个质数相乘产生的n是41和29。 我通过在网上找到的一个模数反码,能够发现d是59。 会有什么问题呢?
# encryption function
def encrypt(msg):
encryption = (msg ** e) % n
return encryption
# decryption function
def decrypt(encrypt):
decryption = (encrypt ** d) % n
return decryption
(另外n是模数,e是公钥的部分,d是私钥的部分)
你的代码不是很清楚,因为我不知道你从哪里和如何得到e,d和n的值,试试这个RSA算法在密码学中的基本实现。
from decimal import Decimal
def gcd(a,b):
if b==0:
return a
else:
return gcd(b,a%b)
p = int(input('Enter the value of p = '))
q = int(input('Enter the value of q = '))
no = int(input('Enter the value of text = '))
n = p*q
t = (p-1)*(q-1)
for e in range(2,t):
if gcd(e,t)== 1:
break
for i in range(1,10):
x = 1 + i*t
if x % e == 0:
d = int(x/e)
break
ctt = Decimal(0)
ctt =pow(no,e)
ct = ctt % n
dtt = Decimal(0)
dtt = pow(ct,d)
dt = dtt % n
print('n = '+str(n)+' e = '+str(e)+' t = '+str(t)+' d = '+str(d)+' cipher text = '+str(ct)+' decrypted text = '+str(dt))