0

我正在寻找一种方法,可以对十六进制字符串进行按位运算(对于加密,所以主要是异或),这可能比我想要的长。例如,我可能有一个冗长的十六进制文字,我想与其他数据进行异或。下面是我想要做什么以及我现在如何做的一个例子,但我相信在某些限制下,计算机会达到它可以放入 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))

所以我想对更长的字符串进行异或运算,我担心它们不适合 Long 变量,所以我该如何解决这个问题?我是否必须将字符串分解成更小的块并通过操作完成每个部分?

4

1 回答 1

5

我相信在某些限制下,计算机会达到它可以放入 Long 的限制

是的,有一个限制,但这个限制是巨大的。最终你会耗尽内存,但同样的情况也可能发生在字符串上。Python 的整数类型可以正常工作。

于 2012-06-30T22:25:54.023 回答