基本RSA python程序

基本RSA python程序,python,encryption,cryptography,rsa,Python,Encryption,Cryptography,Rsa,因此,对于一个学校项目,我正在尝试使用RSA算法制作一个基本的加密/解密程序,这是我到目前为止制作的代码。我经历的两个问题是一个;加密函数中实际执行的等式,由于解密函数中的等式而没有反转,我不知道为什么。。。。 在本例中,我首先输入的公钥是33127,而要解读的私钥是31272011。 第二个问题是,由于现在已定义,显然无法在解密函数结束时打印plaintxt。。。我相信你可以告诉我,我是非常新的编码,所以任何帮助将是伟大的,谢谢 cyphertxt="" def Encrypt():

因此,对于一个学校项目,我正在尝试使用RSA算法制作一个基本的加密/解密程序,这是我到目前为止制作的代码。我经历的两个问题是一个;加密函数中实际执行的等式,由于解密函数中的等式而没有反转,我不知道为什么。。。。 在本例中,我首先输入的公钥是33127,而要解读的私钥是31272011。 第二个问题是,由于现在已定义,显然无法在解密函数结束时打印plaintxt。。。我相信你可以告诉我,我是非常新的编码,所以任何帮助将是伟大的,谢谢

cyphertxt=""
def Encrypt():
    PubKey =str(input("Please enter the key"))
    PubKey1= PubKey[0:1]
    PubKey2=PubKey[2:5]
    PubKey1= int(PubKey1)
    PubKey2= int(PubKey2)
    plaintxt=raw_input("Please enter what you would like to be scrambled")
    I=len(plaintxt)
    for N in range(0,I,1):
        Z = ord(plaintxt[N])
        if N == 0:
            cyphertxt=unichr((Z**PubKey1) % PubKey2)
        else:
            cyphertxt=cyphertxt + unichr((Z**PubKey1) % PubKey2)
    print(cyphertxt)
    return(cyphertxt)


def Decrypt():
    Key = str(input("Please enter the key to unscramble the message"))
    PubKey2= Key[0:4]
    PubKey2=int(PubKey2)
    PrivKey=Key[4:8]
    PrivKey=int(PrivKey)


    I=len(cyphertxt)
    for N in range(0,I,1):
            Z = ord(cyphertxt[N])
            if N == 0:
                    plaintxt=unichr((Z**PrivKey) % PubKey2)
            else:
                    plaintxt=plaintxt + unichr((Z**PrivKey) % PubKey2)
    print(plaintxt)

Encrypt()
Decrypt()

我选择了3作为我的指数,3127作为我的模数,因此2011是我的私钥。我相信我已经计算好了,因为我把素数53和59相乘得到了模数,并用3作为指数,因为它不是3127的因子。然后使用欧拉算法计算私钥不完全是,
PubKey2=PubKey[2:5]
is 127。您可能是想在Encryptional期间获得3127,因此,您在这里使用的是unicode字符串,您的解密功能取决于您输入此类密文的能力。大多数终端无法做到这一点。因此,你必须考虑一种不同的方法来序列化你的密文。因此,正如你所指出的,我已经更改了我的代码,并通过在函数中正确传递我的变量来修复了我的未绑定局部变量问题!(感觉像个白痴!)但是转换回仍然不起作用,我确信这不是一个数学问题。这是因为我像你说的那样使用unicode字符串吗?我使用Unicode字符串,因为我发现从计算中产生的值太高,我是否应该使用计算出的值应用一个ceaser移位,然后将其反转?或者说这太复杂了。非常感谢你的帮助!这让我抓狂你为什么不使用数组来存储密文进行测试(
Decrypt
获取
Encrypt
的输出)?无论如何,您的密钥对在
n=3127
e=3
d=2011
条件下仍然有效。如果数组可以工作,那么您必须找到另一种传输数据的方法,包括序列化和反序列化。