Python RSA Decryption正在抛出TypeErrors

时间:2016-09-14 14:43:22

标签: python python-3.x rsa typeerror precision

我的RSA解密功能:

def decrypt(ctext,private_key):
    key,n = private_key
    text = [chr(pow(char,key)%n) for char in ctext]
    return "".join(text)

有时会抛出TypeError,告诉pow(char,key)%n提供float。这是为什么?我自己无法解释,知道原因会很有趣。

例如,它发生在:

  

crypt-Text = [513300,369218,473524,473524,500307,509880,264366,500307,337068,473524,264834]
  key = -159317
  n = 540767

1 个答案:

答案 0 :(得分:0)

很难从一小段代码中找出很多东西。您获得浮动结果,因为您的变量key是负数。从pow的描述可以清楚地看出,你会得到漂浮结果,这不是你想要的。你真的应该使用3参数形式的pow,你的指数应该总是积极的。通过使用标准RSA math,您可以通过添加Φ(n)的适当倍数来使指数成为正数。在您的特定情况下,Φ(n)=(631-1)*(857-1)= 539280,因此key = 379963modΦ(n)。

你应该纠正给你负指数的代码。