用python做简单的加密与解密!有完整代码

1 说明【用python做简单的加密与解密!有完整代码】公认的文本加密是从公元前1000年姜子牙开始的 , 如阴符 。 比较知名的如二战时德国的密码机-恩尼格玛(Enigma) , 上有26个键位 , 和3-4个转子 , 并且每个月都会重新调整转子的位置 , 也就成为了当时最不可能被破解的加密技术 。 不过后来被波兰数学家率先破解了 , 但也只能是勉强能跟上速度 , 后来由计算机科学之父-图灵造出来了机器对其进行成功破解 。 知识ps:如今已经发展成 秘钥+密文 的状态 , 在本文列子中用到的就是这种 , 知识并没有设置非常高的难度 。
2 简单的加密方法2.1 替换法替换法 , 就是将原文的字符用其他字符替换 , 有替换第几位的 , 也有字符对应替换的 。 如 将 Hello World 的奇数位的字母替换成其排序后面的一位:就得到 Iemlp Xosle一般不知道加密方法的就不知道这是什么了 。
2.2 栅栏加密就是根据规定的长度 , 将一串字符串分成多份 , 再排成多行 , 一列一列的取字符 。
比如需要加密的内容如下:我们明天晚上七点一起去看最新的电影吧
以长度为5来分割后:我们明天晚上七点一起去看最新的电影吧
不足长度的可以用其他特殊符号代替 , 比如 ?加密后的内容:我上去电们七看影明点最吧天一新?晚起的
再根据长度5分割重组就能获得原文 。
2.3 文末例子加密方法
用python做简单的加密与解密!有完整代码文章插图
将秘钥转成ASCII码 , 将文本转成ASCII码 , 利用秘钥的ASCII码循环给文本的ASCII码累加 , 然后转成字符 。 如果字符串长度超过5 , 则转完一串秘钥后 , 再从头开始 。 解密就只需要减去秘钥的ASCII值就行 。
2.4 知识点① ord()可以将字符转成ASCII码
ch='a'chh=ord(ch)print(chh)123输出结果为 97
② chr()可以将数字 , 也就是ASCII码 , 转成字符
num=102ch=chr(num)print(ch)123输-出结果为 f
③列表的切割列表和元组类似 , 简单的用法相同 。 a[ 1 : 3 ]如上的列表切割 , 意为从列表a的第1位开始取 , 直到第3位的前一位结束 。
a=['你','是','风','儿','我','是','沙']print(a[1:4])12输出结果为 [‘是’, ‘风’, ‘儿’]
④按照指定长度切割字符串成列表切割字符串的方法 , 可以根据指定长度将字符串切割成列表
str='春天花会开鸟儿自由自在'newstr=[]i=0while i输出结果为 [‘春天花会’, ‘开鸟儿自’, ‘由自在’]
3 python实现3.1 替换加密text=input('请输入要加密的文本:')#加密text2='' #用来存放加密之后的内容i=0#用循环是为了替换掉文本中的每一个字符while i测试效果
用python做简单的加密与解密!有完整代码文章插图
3.2 栅栏加密text=input('请输入要加密的文本:')#加密newtext=[]#将字符串以固定长度为4来切割i=0while i测试结果
用python做简单的加密与解密!有完整代码文章插图
4 例子4.1 源码import tkintertk=tkinter.Tk()tk.minsize(490,495)tk.maxsize(490,495)tk.title('加密与解密')#加密isencry=False #为了防止点击多次加密出现问题#加密算法,参数:秘钥 , 文本def encryption():key=inputkey.get()global isencryif len(key)>2 and len(key)<10 and isencry:text=inputtext.get(1.0,'end')text2=''#将key转化成ascii码列表newkey=[]for i in key:newkey.append(ord(i))ii=0for i in text:if ord(i)!=10:text2=text2+chr(ord(i)+newkey[ii])#关键部分 , 加密公式else:text2=text2+chr(10)ii=ii+1if ii>=len(newkey):ii=0inputtext.delete(1.0,'end')inputtext.insert('insert',text2)isencry=False#修改文本触发def ismodifytext(*o):global isencryisencry=Truetkinter.Label(tk,text='------------------------------------加 密------------------------------------').place(x=10,y=0)#设置秘钥tkinter.Label(tk,text="请输入3-9位的秘钥").place(x=10,y=30)ik=tkinter.StringVar()inputkey=tkinter.Entry(tk,textvariable=ik,width=36)inputkey.place(x=150,y=30)#输入要加密的文本tkinter.Label(tk,text="请输入要加密的文本").place(x=10,y=60)inputtext=tkinter.Text(tk,width=36,height=10)inputtext.place(x=150,y=60)inputtext.bind('