用python做简单的加密与解密!有完整代码
1 说明【用python做简单的加密与解密!有完整代码】公认的文本加密是从公元前1000年姜子牙开始的 , 如阴符 。 比较知名的如二战时德国的密码机-恩尼格玛(Enigma) , 上有26个键位 , 和3-4个转子 , 并且每个月都会重新调整转子的位置 , 也就成为了当时最不可能被破解的加密技术 。 不过后来被波兰数学家率先破解了 , 但也只能是勉强能跟上速度 , 后来由计算机科学之父-图灵造出来了机器对其进行成功破解 。 知识ps:如今已经发展成 秘钥+密文 的状态 , 在本文列子中用到的就是这种 , 知识并没有设置非常高的难度 。
2 简单的加密方法2.1 替换法替换法 , 就是将原文的字符用其他字符替换 , 有替换第几位的 , 也有字符对应替换的 。 如 将 Hello World 的奇数位的字母替换成其排序后面的一位:就得到 Iemlp Xosle一般不知道加密方法的就不知道这是什么了 。
2.2 栅栏加密就是根据规定的长度 , 将一串字符串分成多份 , 再排成多行 , 一列一列的取字符 。
比如需要加密的内容如下:我们明天晚上七点一起去看最新的电影吧
以长度为5来分割后:我们明天晚上七点一起去看最新的电影吧
不足长度的可以用其他特殊符号代替 , 比如 ?加密后的内容:我上去电们七看影明点最吧天一新?晚起的
再根据长度5分割重组就能获得原文 。
2.3 文末例子加密方法
文章插图
将秘钥转成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
文章插图
3.2 栅栏加密text=input('请输入要加密的文本:')#加密newtext=[]#将字符串以固定长度为4来切割i=0while i
文章插图
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('
- 看不上|为什么还有用户看不上华为Mate40系列来看看内行人怎么说
- 采用|消息称一加9系列将推出三款新机,新增一加9E
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 行业|现在行业内客服托管费用是怎么算的
- 闲鱼|电诉宝:“闲鱼”网络欺诈成用户投诉热点 Q3获“不建议下单”评级
- 美国|英国媒体惊叹:165个国家采用北斗将GPS替代,连美国也不例外?
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 王文鉴|从工人到千亿掌门人,征服华为三星,只因他36年只坚持做一件事
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面
- 同轴心配合|用SolidWorks画一个直角传动,画四个零件就行