增加迭代次数使多态"encryption"的结果略有不同
Increasing the number of iterations make the result of a polymorphic "encryption" slightly different
对于一个随机项目,我正在编写一个 python 程序,它随机生成 "encryption" 和 "decryption" 字符串例程。生成的例程意味着在 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 次迭代工作正常 (routine_len),但当我超过它时,结果略微偏离原始字符串。迭代次数越多,差异越大。在 150 次迭代中,只有一两个字符是错误的。
我一直在努力解决这个问题,但我似乎无法修复它。这可能只是我错过的一些非常愚蠢的东西。
编辑:我用于 mod 的值是错误的。谢谢大家的回复。
使用 %255
,您的最大值不是 255,而是 254。请改用 %256
。
对于一个随机项目,我正在编写一个 python 程序,它随机生成 "encryption" 和 "decryption" 字符串例程。生成的例程意味着在 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 次迭代工作正常 (routine_len),但当我超过它时,结果略微偏离原始字符串。迭代次数越多,差异越大。在 150 次迭代中,只有一两个字符是错误的。
我一直在努力解决这个问题,但我似乎无法修复它。这可能只是我错过的一些非常愚蠢的东西。
编辑:我用于 mod 的值是错误的。谢谢大家的回复。
使用 %255
,您的最大值不是 255,而是 254。请改用 %256
。