对于一个随机项目,我正在编写一个随机生成"加密"和#34;解密"字符串的例程。生成的例程意味着在eval()
def buildRoutines(routine_len):
instructions = ['+', '-', '^']
pairs = {'+': '-', '-': '+', '^': '^'}
encrypt = ""
decrypt = ""
random.seed()
for _ in range(0, routine_len):
i = random.randrange(3)
j = random.randrange(100)
encrypt += 'e=' + 'chr((' + 'ord(e)' + instructions[i] + str(j) + ')%255)' + ';'
decrypt = 'e=' + 'chr((' + 'ord(e)' + pairs[instructions[i]] + str(j) + ')%255)' + ';' + decrypt
# Do some more stuff
encrypt = 'a="";e=""\nfor b in c:e=b;' + encrypt + 'a+=e;'
decrypt = 'd="";e=""\nfor b in a:e=b;' + decrypt + 'd+=e;'
return {'encrypt': encrypt, 'decrypt': decrypt}
最多大约50-ish迭代正常工作(routine_len),但是当我超过它时,结果略微偏离原始字符串。迭代越多,它就越不同。在150次迭代中,只有一两个字符是错误的。
我一直试图解决这个问题,但我似乎无法解决这个问题。
,这可能是我真正愚蠢的事情。编辑:我用来修改mod的价值是错误的。谢谢所有回复的人。
答案 0 :(得分:1)
使用%255
,您的最大值不是255,而是254.请改用%256
。