我正在寻找一种方法,我可以对十六进制字符串执行按位操作(对于加密,因此主要是xor),这可能比我想要在Long中更长。作为一个例子,我可以有一个冗长的十六进制文字我想与其他数据xor。下面是我想要做的以及我现在如何做的一个例子,但我相信在某些限制下,计算机会达到它可以放入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变量,所以如何解决这个问题呢?我是否必须将字符串分成较小的块并通过操作完成每个部分?
答案 0 :(得分:5)
我相信在某种程度上,计算机将达到它可以放入Long的限制
是的,有一个限制,但该限制是巨大。最终你会耗尽内存,但字符串也会发生同样的情况。 Python的整数类型可以正常工作。