python加密规则ascii码值加5_python异或加密和解密

学了python的异或加密和解密,今天就再复习一遍,不然又还回给老师了…(尴尬一笑)

操作环境

win10,python3

异或简单介绍

在二进制中,1与0异或的结果为1,即 1^0=1

又如:1010=00,1001=11,101^110=011

很简单,每个对应位的数相同结果就为0,不同则为1

基本思路

1、通过明文字符与密钥字符一一异或,当然,异或是取得该字符对应的ASCII码,

2、将该字符对应的ASCII码转换成二进制数,最后两个二进制数进行异或运算,得到一个新

的二进制数,

3、再将该二进制数转换成ASCII码(就是把二进制数转换成十进制数),最终获

得该ASCII码对应的字符,获得一个密文字符。

说的比较啰嗦,说白了就是”ord()”方法和”chr()”方法的使用,详情请看代码>>>

加密代码

#加密

key=’A’ #密钥

message=’haoiphgaop’ #明文

ml=len(message) #分别得到密钥和明文的长度

kl=len(key)

key=ml//kl*key+key[:ml%kl] #因为要一对一的异或,所以key要变化

pwd=[] #通过取整,求余的方法重新得到key

for i in range(len(key)):

pwd.append(chr(ord(key[i])^ord(message[i]))) #一对一异或操作,得到结果,其中,”ord(char)”得到该字符对应的ASCII码,”chr(int)”刚好相反

print(”.join(pwd))

1

2

3

4

5

6

7

8

9

10

加密结果

) .(1)& .1 #包括空格共10个字符

1

解密代码

#解密

result=[]

#pwd为密文

for j in range(len(key)):

result.append(chr(ord(pwd[j])^ord(key[j]))) #跟KEY异或回去就是原明文

result=”.join(result)

print(result)

1

2

3

4

5

6

7

解密结果

haoiphgaop #正是原明文

1

注意

解密中跟KEY异或回去就是原明文…

举个例子吧:

10101^11100=01001

结果是01001

01001^10101=11100

01001^11100=01001

异或的结果再与原来的其中一个数异或运算就得到另外一个原来的数

————————————————

版权声明:本文为CSDN博主「qq_41699991」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_41699991/article/details/83217028

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值