增加迭代次数会产生多态的加密效果。略有不同

时间:2016-04-18 02:50:13

标签: python python-3.x obfuscation

对于一个随机项目,我正在编写一个随机生成"加密"和#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的价值是错误的。谢谢所有回复的人。

1 个答案:

答案 0 :(得分:1)

使用%255,您的最大值不是255,而是254.请改用%256