RSA python3 - 解密输出不等同于信息。

问题描述 投票:-2回答:1

我一直试图为一个输入信息(是一个数字)创建一个基本的加密解密代码。然而我的解密代码并没有产生信息。 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是私钥的部分)

python rsa
1个回答
0
投票

你的代码不是很清楚,因为我不知道你从哪里和如何得到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)) 
© www.soinside.com 2019 - 2024. All rights reserved.