以XOR为基础的加密算法设计时,不能同时使用XOR和加法。代码混淆、内存保护等安全机制中常用XOR类算法进行快速变换,隐藏信息。

下面的代码演示的加密过程将导致明文密文空间不一致,因而加解密算法无法正确设计。

#!/usr/bin/env python
# encoding: utf-8

result = []
for i in range(128):
  key = ((i^234)+1>>4)&0x0F&0xFF
  p = (key^i)&0xFF
  print p
  result.append(p)
  
m = set(result)
print m,len(m)


result = []
for i in range(128):
  key = ((i^243)+1>>4)&0x0F&0xFF
  p = (key^i)&0xFF
  print p
  result.append(p)
  
m = set(result)
print m, len(m)