首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python密码学

python密码学
EN

Stack Overflow用户
提问于 2016-12-13 00:11:39
回答 1查看 61关注 0票数 0

我是这个领域的新手,你能帮我一下吗?我的密码文本(encrypt3)中的每一个字节都被解释为0到255之间的整数。对于Plaintext=Ciphertext -100 (mod 256),每个字节被解释为整数。在下面的代码中,我有错误: newbyte=c.to_bytes(1,byteorder=sys.byteorder,signed=False) OverflowError:无法将负int转换为无符号帮助将不胜感激。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-13 01:42:50

模运算符(%)是在减法运算符(-)之前处理的,所以您的语句c=c-100 % 256等效于c=c-(100 % 256),或者仅仅是c=c-100 (因为100 % 256 == 100)。因此,每当您的代码遇到小于100 (='d')的字符时,它就会崩溃。

您可以通过将c=c-100 % 256更改为c=(c-100) % 256来修复此问题。

读一读Python 3中的运算符优先

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41111761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档