2016-10-10 93 views
0

我使用python的庫加密實現RSA算法,但是我已經停下來時,下列異常發生:Python的加密庫 - ValueError異常:密文長度必須等於密鑰大小

ValueError: Ciphertext length must be equal to key size. 

從我收集的這個看來,這似乎是圖書館本身的限制,而不是通常在其他圖書館實施的東西。

當我嘗試解密以前加密的消息時引發此異常,但我可以採取什麼措施來避免它?當我創建公鑰和私鑰時,我無法知道密文的長度(加密信息),稍後我會得到...我真的可以控制這個嗎?

我認爲問題在於創建密鑰,我一直試圖給原始解密消息上的位數作爲參數來創建具有相同位數的密鑰的參數,但它仍然會提高同樣的例外...

我一直在使用它來找出原始郵件上的位數,也許我做錯了......?

m = message 
m.encode(encoding='UTF-8',errors='strict') 
bits = len(m)*4*8 

編輯:

我的代碼很長,因爲它有其他的一些東西,但我可以把一些關鍵點

privateKeySender , publicKeySender = generateKeys(bits) 
privatekeyReceptor, publickeyReceptor = generateKeys(bits) 

ciphertext  = myencrypt(publickeyReceptor , message) 
signature  = sign(ciphertext, publickeyReceptor) 
decryptMessage = mydecrypt(ciphertext, privatekeyReceptor) 
validation  = validateSignature(message,signature, publicKeySender) 

該異常被解密的方法拋出

def mydecrypt(ciphertext, privateKey): 
    ciphertextD = base64.b64decode(ciphertext) if not isinstance(ciphertext, bytes) else ciphertext 

    message= privateKey.decrypt(
        ciphertextD, 
        padding.OAEP(
          mgf=padding.MGF1(algorithm=hashes.SHA1()), 
          algorithm=hashes.SHA1(), 
          label=None 
        ) 
       ) 
    message= str(message) 
    message.encode(encoding='UTF-8',errors='strict') 
    return message 
+0

請發佈導致您例外的代碼。 – Guillaume

回答

0

問題在於密文的編碼,它沒有在加密方法上正確編碼。

相關問題