增加迭代次数使多态"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