ランダムプロジェクトでは、文字列の "暗号化"と "復号化"ルーチンをランダムに生成するPythonプログラムを作成しています。その結果ルーチンは罰金(routine_len)作品約50っぽいの反復まで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}
で使用することを意味しているが、私はその上に行くとき、結果は元の文字列から少し離れています。反復回数が多いほど、それは異なる。 150回の反復では、1〜2文字だけが間違っています。
私はこれを理解しようとしてきましたが、修正できないようです。それはおそらく私が行方不明になっている本当に愚かなものです。
EDIT:modに使用していた値が間違っていました。返事をくれた皆さん、ありがとうございました。
もし 'iterations'の数にかかわらず間違っていれば、それは間違いです。 –
@MitchWheat私はそれを仮定しますが、100-ishと反復では、文字列は元の文字列とまったく同じに見えます。どのようにそれが間違っていることができますか?結果の等価性を元の文字列でチェックすると(==付き)、同じときはTrueを、そうでないときはfalseを返します。したがって、ルーチンはより長い時間で動作しないことがあります。 – Fluffy
あなたは '%256'を望んではいませんか?高い反復で問題に遭遇する理由は、その辺の大文字小文字が見つからないということですか? '%255 'はあなたの最大値が254であることを意味します。 –