gpt4 book ai didi

python - 如何在 Python 中将十六进制字符串与文字字符串进行异或?

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:49 25 4
gpt4 key购买 nike

我的最终目标是使用线性同余生成器用十六进制字符串加密/解密字符串。

我有一个“键”列表,我想将其与字符串进行异或。例如,键列表为 ['0x92', '0xe3', 0x18'...],我想要与键进行异或的字符串为 'apple'。键列表的长度与字符串的长度相同。

我希望能够生成诸如“\xF3\x93\x68...”之类的结果

我不知道如何开始这种方法。我是否应该将字符串中的每个字符转换为二进制,并将每个十六进制字符串转换为二进制并将它们异或在一起?

我正在寻找的结果(xF3..),是unicode吗?

最佳答案

鉴于keys的长度等于text的长度,可以简单地使用zip并使用join 生成字符串:

keys = ['\x92', '\xe3', '\x18']
text = 'app'
result = ''.join(chr(ord(key)^ord(tex)) for key,tex in zip(keys,text))

代码的工作原理如下:zip发出keystext中元素的元组:因此zip(keys ,文本)大致是:

list(zip(keys,text)) == [('\x92', 'a'), ('ã', 'p'), ('\x18', 'p')]

现在我们将 keytex 与每个元组统一起来,因此在第一次迭代中 key'\x92' tex'a'。通过对这些元素调用 ord(..),我们获得了 ASCII 代码。接下来,我们对这些 ASCII 代码执行 XOR (^) 运算,并将其转换回相应的 char(..)。我们使用 ''.join(..) 将所有这些字符连接在一起形成结果字符串,即:

result == 'ó\x93h'

关于python - 如何在 Python 中将十六进制字符串与文字字符串进行异或?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com