xor encrypt

| 热度 | 字数统计: 234 字 | 阅读时长: 1 分

xor 异或运算表示 两个操作数的位中, 相同则为0, 不同则为1.

xor 的运算符一般为 ^ 或者 XOR, 例如 110^011 表示对 110 和 011 两个二进制数进行异或运算.

1
2
3
111^101 010
110^110 000
101^010 111

xor 有个很神奇的特点, 对于两个二进制数 a b, 如果 a^b = c, 那必有 c^b = a.

1
2
3
010^101 111
000^110 110
111^010 101

基于这种特性, 就衍生出了 xor 加密.

message XOR key //cipher

cipher XOR key //message

注意在加解密前后, key 的长度必须大于等于 message 或者 cipher 的长度.

python 的 xor 加密实现

1
2
3
4
5
6
message = 'Hello World'
key = 'exp10itexp10itexp10it'

cipher = ''
for i,j in zip(message,key):
cipher += chr(ord(i)^ord(j))

cipherL '-\x1d\x1c]_I#\n\n\x1cU'

解密同理

1
2
3
4
5
6
cipher = '-\x1d\x1c]_I#\n\n\x1cU'
key = 'exp10itexp10itexp10it'

message = ''
for i,j in zip(cipher,key):
message += chr(ord(i)^ord(j))

message: Hello World

本文标题:xor encrypt

文章作者:X1r0z

发布时间:2018年07月30日

原始链接:https://exp10it.cn/2018/07/30/2018-07-30-xor-encrypt/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者.