我是这个领域的新手,您能帮我吗?我的密文(encrypt3)中的每个字节都解释为0到255之间的整数。对于每个字节,Plaintext = Ciphertext -100(mod 256)。在下面的代码中,我有错误:newbyte = c.to_bytes(1,byteorder = sys.byteorder,signed = False)OverflowError:无法将负int转换为unsigned任何帮助将不胜感激。
import sys
f=open("encrypt3.dat","rb")
s=f.read(100)
d=bytearray(s)
print (len(d))
strnew=''
newbyte=b''
for c in d :
c=c-100 % 256
newbyte=c.to_bytes(1,byteorder=sys.byteorder,signed=True)
strnew=strnew + newbyte.decode('latin1')
print(strnew)
模数运算符(%
)在减法运算符(-
)之前进行处理,因此您的语句c=c-100 % 256
等于c=c-(100 % 256)
或刚好c=c-100
(因为100 % 256 == 100
)。因此,您的代码每遇到一个ASCII码小于100(='d')的字符,便会崩溃。
您可以通过更改c=c-100 % 256
为来解决此问题c=(c-100) % 256
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句