簡體   English   中英

Python RSA 解密拋出 TypeErrors

[英]Python RSA Decryption is throwing TypeErrors

我的 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 這是為什么? 我自己無法解釋,知道原因會很有趣。

例如,它發生在:

ctext = [513300, 369218, 473524, 473524, 500307, 509880, 264366, 500307, 337068, 473524, 264834]
private_key = [-159317, 540767]

很難從一小段代碼中找出很多東西。 你得到浮點結果,因為你的變量key是負數。 pow的描述中可以清楚地看到,你會得到浮動結果,這不是你想要的。 您確實應該使用 pow 的 3 參數形式,並且您的指數應始終為正。 通過使用標准RSA 數學,您始終可以通過添加適當的 Φ(n) 倍數來使指數為正。 在您的特定情況下,Φ(n) = (631 - 1) * (857 - 1) = 539280,所以鍵 = 379963 mod Φ(n)。

您應該更正給您提供負指數的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM