2013-03-09 85 views
0

我正在处理未知密钥的XNOR加密文件。我想修改可用于此的xortool:https://github.com/hellman/xortool以用于XNOR加密。将XOR更改为XNOR

显然,只有两行使用'^'运算符。所以我尝试使用〜运算符将它们更改为xnor。但我无法获得所需的输出。我怎样才能做到这一点?

编辑:代码使用 '^' 操作者仅在管路248中xortool.py

key_possible_bytes[offset] += chr(ord(char)^most_char) 

和在管线75中routine.py

ret[index] = (chr(ord(char)^ord(key[index % len(key)]))) 

所以我之前添加了〜运算符两个都。

+2

*您是怎么*改变他们?你可以在你的文章中加入一些相关的代码吗? – 2013-03-09 20:51:15

+0

你必须改变它吗?找到XNOR键相当于找到XOR键并反转该键。 – harold 2013-03-10 10:25:01

+0

如果你有纯文本和密码文本,你可以派生出密钥... – 2013-03-10 15:38:40

回答

5

a^b的所有实例替换为~(a^b)以将XOR操作更改为XNOR操作。确保将非操作员插入到正确的位置,以确保正确的操作顺序发生!

使用您的具体代码示例:从最大价值

key_possible_bytes[offset] += chr(~(ord(char)^most_char))

ret[index] = (chr(~(ord(char)^ord(key[index % len(key)]))))

+0

是的,我也是这样做的,但是我得到这个错误TypeError:错误的操作数类型为一元〜''str'' – anirudhrata 2013-03-09 20:57:50

+0

'〜'是'C'中的按位NOT运算符,大多数其他语言都是从'C'语法派生它们的位运算符。根据粗略的谷歌搜索,python不是一个接受。 – 2013-03-09 21:00:35

0

减。

如果你是'异或” 8位值,这将做的工作:

0xff - (0xf0^0x0f)