翻转一个字节中的最后一位

时间:2014-03-17 18:34:23

标签: python byte bit xor

最终目标是翻转位置X处的最后一位字节。假设我们从网站开始使用字符串,我们对它进行解码,以便我们可以使用它:

IV = "2RDs+xm/AxtYj+XViJmBPQ=="
IV = base64.b64decode(IV)

这给了我们一些看起来像垃圾的东西( X =),但这是我们可以使用的东西。使用它的最佳方法是将其放入列表中。

woop = list(IV)

让我们说在这个例子中,我们希望翻转第二个字节的最后一位。 Python从零开始计数,所以我们需要将计数器减少1.否则,我们将把程序指向第3个字节!要翻转任何东西,你将它排除在1.现在这是我的问题......

CounterX = CounterX - 1
woop[CounterX] = chr(ord(IV[CounterX]) ^ 1)
woop = "".join(woop)
IV = woop

我很确定翻转整个字节。如何告诉它只在IV [CounterX]上翻转字节的最后一位?

1 个答案:

答案 0 :(得分:2)

  • base64.decode返回一个字符串
  • python2x中的
  • 字符串总是字节!
    • 如果您使用python3,您可能需要调用bytes(IV)以确保8位块...但我不确定我不使用python3
  • some_int XOR 1只会翻转最低字节
    • ,如print bin(0xff ^ 0x01)
    • 所示

所以我们再次回到是什么让你认为这不是你所看到的行为?你能给我们一个展示这个问题的例子吗?