我正在使用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
问题出在密文的编码上,它在加密方法上没有正确编码。在
相关问题 更多 >
编程相关推荐