Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将公钥传递到rsa解码器类型时出现问题错误:**或pow()的操作数类型不受支持:'str'和'int'_Python_Python 3.x - Fatal编程技术网

Python 将公钥传递到rsa解码器类型时出现问题错误:**或pow()的操作数类型不受支持:'str'和'int'

Python 将公钥传递到rsa解码器类型时出现问题错误:**或pow()的操作数类型不受支持:'str'和'int',python,python-3.x,Python,Python 3.x,大家好!在传递密钥后,有没有办法解决解码问题,加密和解密后的代码工作正常,但一旦我开始从数据库中选择publick密钥,就会显示出这个问题。我已经更改了数据类型everything good different同一行中的错误plain=[chrpowchar**key%n for char in ciphertext]错误im获取类型错误:不支持**或pow的操作数类型:“str”和“int” 假设来自数据库的数据是 data=1650291624165036482612587118187912

大家好!在传递密钥后,有没有办法解决解码问题,加密和解密后的代码工作正常,但一旦我开始从数据库中选择publick密钥,就会显示出这个问题。我已经更改了数据类型everything good different同一行中的错误plain=[chrpowchar**key%n for char in ciphertext]错误im获取类型错误:不支持**或pow的操作数类型:“str”和“int”

假设来自数据库的数据是

data=16502916241650364826125871181879125871246803291624295583281818234716503551129558335511291624181879181879246803125871295583304595291624291624181879295583181496181496184182295114292940

key=117535
n=365867
private_key=113503
p=643
q=569
它应该给我这个: b7bcd0d379f2b5957003d947709

解密代码:

def decrypt(nn,pk, ciphertext):
    #Unpack the key into its components

    n=nn
    key=pk
    #Generate the plaintext based on the ciphertext and key using a^b mod m
    plain = [chr((ord(char) ** key) % n) for char in ciphertext]
    #Return the array of bytes as a string
    return ''.join(plain)

if __name__ == '__main__':
    '''
    Detect if the script is being run directly by the user
    '''

    print("Your public key is ", public ," and your private key is ", private)

      msg1=name 

xxc=decrypt(n, key, msg1)
    print(xxc)
    print("\n")
最后,我发送加密名称的结果是enc_name和公钥picc和picc2

我尝试更改pk1=int231761和pk2=int399089的数据类型,但根本不起作用,并尝试解决同样的问题。我看到过几篇关于同一个相关问题的帖子,但是解决方案在我的案例中不起作用,比如和,这些解决方案都不适用于我。我正在使用python 3.6 spyder

任何建议!谢谢大家,char变量是string,所以您需要先将它转换为int。您可以将此函数用于:

plain = [chr((ord(char) ** key)  % n) for char in ciphertext]
char变量是string,所以需要首先将其转换为int。您可以将此函数用于:

plain = [chr((ord(char) ** key)  % n) for char in ciphertext]

谢谢,先生,但是现在我得到了这个错误'TypeError:pow期望至少有2个参数,得到1'??即使我传递了两个参数public和msg1,也许你想要这个chrpowordchar,key%n@honey您应该同时使用或pow或**。@honey是的,您应该传递n值来加密和解密数据。好的,先生,我想这就是问题所在,我只传递公钥,我将测试它谢谢先生,但是现在我得到了这个错误'TypeError:pow期望至少有2个参数,得到了1'??即使我传递了两个参数public和msg1,也许你想要这个chrpowordchar,key%n@honey您应该同时使用或pow或**。@honey是的,您应该传递n值来加密和解密数据。好的,先生,我想这就是问题所在,我只传递公钥,我将测试它以改进您的RSA代码,您可以询问它CodeReview.SE,因为它现在正在工作。如果答案有用且正确,不要忘记投票并接受。通过这种方式,人们可以看到您的问题已得到解决。要改进您的RSA代码,您可以询问它CodeReview.SE,因为它现在正在工作。如果答案有用且正确,不要忘记投票并接受。这样人们就可以看到你的问题已经解决了。