gpt4 book ai didi

python - binascii 出现问题。错误 : Odd-length string

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:26 28 4
gpt4 key购买 nike

我正在尝试编写一个使用 RSA 加密和解密文本文件的程序。我在使用 binascii 的 unhexlify 时似乎遇到了问题。

out_format = '%%0%dx' % (chunk_size * 2,)
plain = pow(coded, int(key), int(private_modulus))

chunk = unhexlify((out_format % plain).encode())

当我的程序到达最后一行时,它会抛出错误“binascii.Error:奇数长度字符串”

最佳答案

您的 plain大于 chunk_size * 2 十六进制数字,因此生成的字符串包含奇数个十六进制数字这里。您需要处理该溢出。

仅包含 2 个十六进制数字和值 256(十六进制 100)的示例:

>>> '%02x' % 256
'100'
>>> unhexlify('%02x' % 256)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
binascii.Error: Odd-length string

我不熟悉 RSA 解密的工作原理,因此我无法判断问题是否出在 plain 的计算上,或者您应该屏蔽该值以适应 block 大小。为了适应 block 大小,您可以使用以下方式屏蔽 plain 值:

mask = (1 << (chunksize * 8)) - 1
plain &= mask

我在这里使用 str.format() 而不是使用 % 的旧式字符串格式;您可以更轻松地合并宽度:

unhexlify('{1:0{0}x}'.format(chunk_size * 2, plain))

编码为字节是可选的,binascii.unhexlify 也接受字符串,至少在 Python 3.3 上是这样。

关于python - binascii 出现问题。错误 : Odd-length string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com