0

Longに収まるよりも長くなる可能性がある16進文字列でビット単位の操作(暗号の場合はほとんどxorの場合)を実行できる方法を探しています。例として、他のデータと xor したい長い 16 進リテラルを使用できます。以下は、私がやりたいことと現在どのように行っているかの例ですが、ある制限でコンピューターが Long に入れることができる限界に達すると信じているので、どうすればこれをより確実に行うことができますか?

#assuming lengths of messages are correct and key length as well
old_hex = "top secret ascii message".encode('hex')
encoded = "09e1c5f70a65ac56e55ac519458e7e53f36" #a literal hex encoded string
key_hex = int(old_hex,16) ^ int(encoded,16) #this currently works because this fits in Long
new_hex = "my new message to send 2".encode('hex')
ans_hex = key_hex ^ int(new_hex,16)

print 'old message in hex: 0x'+old_hex
print 'found a key in hex: '+str(hex(key_hex))
print 'new message in hex: 0x'+new_hex
print 'new message encode: '+str(hex(ans_hex))

したがって、これよりも長い文字列で XOR を実行したいと思いますが、Long 変数に収まらないのではないかと心配しています。どうすればこれを回避できますか? 文字列を小さなチャンクに分割し、各部分を操作する必要がありますか?

4

1 に答える 1

5

私は、ある限界で、コンピューターがロングに入れることができる限界に達すると信じています

はい、制限はありますが、その制限は巨大です。最終的にはメモリ不足になりますが、同じことが文字列でも発生する可能性があります。Python の整数型は問題なく動作します。

于 2012-06-30T22:25:54.023 に答える