2016-10-10 95 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

问题在于密文的编码,它没有在加密方法上正确编码。

相关问题