python异或运算求key_用python 实现XOR 加密解密的方法

这篇文章介绍 XOR 加密解密及 python 实现方法

XOR运算

XOR运算,中文称为“异或运算”。

它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。

对应的真值表如下:

XOR 运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。

// 第一次 XOR

1010 ^ 1111 // 0101

// 第二次 XOR

0101 ^ 1111 // 1010

加密过程

从上面的真值表中可以看出,我们可以取右操作数(左操作数)当做加密密钥,记为key,取左操作数(右操作数)作为待加密文本,记为message。

前提:首先得确保通信发送方和通信接收方都存储了相同的key;

加密:通信发送方将message与key作一次异或运算(message XOR key)后就可以得到一段加密文本(encyptedMessage)。我们就可以通过在网络中传输这段加密文本,就保证了我们的消息在网络传输过程中的安全性,因为如果别有用心的人通过一定手段从网络中截取我们的通信文本,拿到的也只是encyptedMessage,由于没有key,该别有用心的人是无法读懂这段encyptedMessage的;

解密:通信接收方收到通信发送方的encyptedMessage后,将encyptedMessage与key再次进行异或运算就可以得到通信发送方本来想发送的文本message,从而读懂通信发送方的意图。

XOR 加密的python实现

def xor_crypt_string(data, key='awesomepassword', encode=False, decode=False):

from itertools import izip, cycle

import base64

if decode:

data = base64.decodestring(data)

xored = ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))

if encode:

return base64.encodestring(xored).strip()

return xored

secret_data = "239054"

print xor_crypt_string(secret_data, encode=True)

print xor_crypt_string(xor_crypt_string(secret_data, encode=True), decode=True)

注意问题

最关键的KEY不能泄露.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值