Python 将公钥传递到rsa解码器类型时出现问题错误:**或pow()的操作数类型不受支持:'str'和'int'
大家好!在传递密钥后,有没有办法解决解码问题,加密和解密后的代码工作正常,但一旦我开始从数据库中选择publick密钥,就会显示出这个问题。我已经更改了数据类型everything good different同一行中的错误plain=[chrpowchar**key%n for char in ciphertext]错误im获取类型错误:不支持**或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
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,因为它现在正在工作。如果答案有用且正确,不要忘记投票并接受。这样人们就可以看到你的问题已经解决了。