python cryptography library - ValueError: Ciphertext length must be equal to key size

python cryptography library - ValueError: Ciphertext length must be equal to key size

我正在使用 python 的库加密实现 RSA 算法,但是当出现以下异常时我停止了:

ValueError: Ciphertext length must be equal to key size.

据我所知,这似乎是库本身的限制,而不是其他库实现中常见的限制。

当我尝试解密以前加密的消息时会引发此异常,但我该如何避免呢?当我创建 public 和私钥时,我不知道密文(加密消息)的长度,稍后我会得到...我真的可以控制它吗?

我认为问题出在密钥的创建上,我一直在尝试在原始解密消息上提供相同数量的比特作为创建具有相同比特数量的密钥的参数,但它仍在增加同样的例外...

我一直在用它来找出原始消息的位数,也许我做错了...?

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

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