python - 翻转一个字节的最后一位

标签 python byte bit xor

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

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

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

woop = list(IV)

假设在此示例中,我们希望翻转第二个字节的最后一位。 Python 从零开始计数,因此我们需要将计数器减 1。否则,我们会将程序指向第三个字节!要翻转任何内容,请将其异或乘以 1。现在这是我的问题...

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

我很确定这会翻转整个字节。我怎样才能告诉它只翻转 IV[CounterX] 处字节的最后一位?

最佳答案

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

那么我们再次回到是什么让您认为这不是您所看到的行为?您能给我们举个例子来说明这个问题吗?

关于python - 翻转一个字节的最后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22462538/

相关文章:

python - PyQt5 : how to make QThread return data to main thread

使用 TypeVar/泛型 和中间类型变量的装饰器的 python 类型提示

python - 是否有相当于 Unix `which` 命令的 python?

C# 向左旋转位溢出问题

python - 在 Python 对象中,如何查看已使用 @property 装饰器定义的属性列表?

c - 如何向字节添加和提取位?

java - 在 HBase 中将 bytes[] 转换为字符串

java - 将字符串转换为字节 - Java

c - C 中用于检查位的简单位掩码方法

java - 如何计算BitSet对象中的总位数?