python加密库值错误:密文长度必须等于密钥大小

2024-06-28 19:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

ValueError: Ciphertext length must be equal to key size.

从我收集到的信息来看,这似乎是对库本身的一种限制,而不是其他库实现中常见的情况。在

当我试图解密以前加密的消息时,会引发此异常,但我可以做些什么来避免它?当我创建公钥和私钥时,我不知道密码文本(加密消息)的长度,我稍后会得到。。。我真的能控制这一切吗?在

我认为问题在于密钥的创建,我一直试图在原始解密消息上给出相同数量的比特作为参数,以创建具有相同比特数的密钥,但它仍然引发了相同的异常。。。在

我一直在用这个找出原始信息的位数,也许我做错了。。。?在

^{pr2}$

编辑:

我的代码很长,因为它也有其他东西,但我可以提出一些关键点

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

Tags: 信息消息密码message密钥bitssignatureciphertext