不知道你们有没有试过有趣的表白情节?以前网上流行发一串摩斯密码,然后解密出来就是一个i love you.今天给你们来带你更高级的加密表白。异或加密情书。
之前我做的c++版本的异或加密解密得到不错的成绩。这此用python再做一遍。
首先先上效果图。
文件a是初始文本,文件b是由文件a加密而成的。我们发给小师妹的文件可以是b文件。而c文件则是由b文件解密出来的。
其中如果输入错了解密的密码,就会出现另外一堆乱码。
只有解密的密码正确,才能输出正确的内容。 加密原理: 异或加密,我们先要知道,任何字符异或一个内容之后,再重复异或之前相同的内容,那么这个字符不变。我们可以把文本内的所有内容都进行异或处理加密。然后再进行异或处理解密。只要钥匙是不变的,那么他们解密后的内容是一样的。 加密代码
alltext=[]
def writeTxt():
i=0
f=open("b.txt","w",encoding='utf-8')
while i < len(alltext):
f.write("{}\n".format(alltext[i]))
i=i+1
f.close()
def encode():
pw=(int)(input("请输入4位数字的密码:"))
f = open("a.txt")
line = f.readline()
while line:
onetext=[]
print("拿完整源码,公众号:诗一样的代码"
alltext.append(line)
print(line)
line = f.readline()
f.close()
encode()
writeTxt()
解密代码
alltext=[]
def writeTxt():
i=0
f=open("c.txt","w",encoding='utf-8')
while i < len(alltext):
f.write("{}\n".format(alltext[i]))
i=i+1
f.close()
def decode():
pw=(int)(input("请输入4位数字的密码:"))
f = open("b.txt",encoding='utf-8')
line = f.readline()
while line:
onetext2=[]
print("拿完整源码,公众号:诗一样的代码"
print(line)
line = f.readline()
f.close()
decode()
writeTxt()
这里的难点在于字符串是不可变的,所以进行异或会比较麻烦。
由于加密的钥匙是自己填写的,我们可以任意修改填写钥匙。由于加密内容的保密性,我们可以把 1加密后的文本 2解密钥匙 3解密exe 以上全部内容发给小师妹,那事情就成了。
当然,为了增加成功率,你也可以批量发给多个小师妹,只要密码不一样,同一个exe,同一份文本,也不会串频道。(狗头表情,开个玩笑)
其实加密方法有很多种,异或加密也是其中一种。在工作中,我们或许在后端框架中看到各种各样的加密。虽然用途和表白不一样。但是只需要研究清楚加密的原理,知识是通用的。
有需要拿完整源码的话,请移步到公众号:诗一样的代码。既然进来了,原创不易。小伙伴点个赞再走呗。
|