擅长:python、mysql、java
<p>尝试此功能:</p>
<pre><code>def four_byte_xor(buf, key):
outl = []
for i in range(0, len(buf), 4):
chunk = buf[i:i+4]
v = struct.unpack(b"=I", chunk)[0]
v ^= key
outl.append(struct.pack(b"=I", v))
return b"".join(outl)
</code></pre>
<p>我不确定你是不是真的把输入量增加了4个字节,但我没有试图破译它。这假设您的输入可以被4整除。</p>
<p>编辑,基于新输入的新功能:</p>
<pre><code>def four_byte_xor(buf, key):
key = struct.pack(b">I", key)
buf = bytearray(buf)
for offset in range(0, len(buf), 4):
for i, byte in enumerate(key):
buf[offset + i] = chr(buf[offset + i] ^ ord(byte))
return str(buf)
</code></pre>
<p>这也许可以改进,但它确实提供了适当的输出。</p>