使用Python对冗长的十六进制和ascii字符串进行逐位操作

使用Python对冗长的十六进制和ascii字符串进行逐位操作,python,hex,bit-manipulation,xor,Python,Hex,Bit Manipulation,Xor,我正在寻找一种方法,可以对十六进制字符串执行位操作(对于加密操作,主要是异或操作),这可能比我希望在长字符串中使用的长度更长。作为一个例子,我可能有一个很长的十六进制文本,我想与其他数据进行异或运算。下面是一个例子,我想做什么,我现在是如何做的,但我相信在某种程度上,计算机将达到它的极限,它可以投入的时间很长,那么我如何才能更有力地做到这一点 #assuming lengths of messages are correct and key length as well old_hex = "t

我正在寻找一种方法,可以对十六进制字符串执行位操作(对于加密操作,主要是异或操作),这可能比我希望在长字符串中使用的长度更长。作为一个例子,我可能有一个很长的十六进制文本,我想与其他数据进行异或运算。下面是一个例子,我想做什么,我现在是如何做的,但我相信在某种程度上,计算机将达到它的极限,它可以投入的时间很长,那么我如何才能更有力地做到这一点

#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,我担心它们不能放入一个长变量中,那么我如何才能绕过这个问题呢?我是否必须将字符串分解成更小的块,并在整个操作中完成每个部分

我相信,在某种程度上,电脑将达到它的极限

是的,有一个限制,但这个限制是巨大的。最终会耗尽内存,但字符串也会出现同样的情况。Python的整数类型可以很好地工作

我相信,在某种程度上,电脑将达到它的极限


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

字符串有多长?python INT将永远持续下去
2**4096
适合整数,所以如果我在一段或整页的十六进制中粘贴,你认为转换为整数时它不会达到极限吗?不应该。如果你在做一个简单的异或密码,只需对每个字符分别进行异或运算,如果通过某种疯狂的方法,你会溢出一个python int。否则,使用你所实现的算法标准中定义的int。你的字符串有多长?python INT将永远持续下去
2**4096
适合整数,所以如果我在一段或整页的十六进制中粘贴,你认为转换为整数时它不会达到极限吗?不应该。如果你在做一个简单的异或密码,只需对每个字符分别进行异或运算,如果通过某种疯狂的方法,你会溢出一个python int。否则,请使用你正在实现的算法标准中定义的int,谢谢。我想这与C的工作方式类似,但我想不会。很高兴知道。好的,谢谢。我想这和C做事情的方式很相似,但我想不是。很高兴知道。