3.4加密与解密博山实验中学电教中心制作导入数据应用既为我们带来便利,同时也存在许多安全隐患,如未经许可数据被复制、篡改、暴露或破坏。因此,在数据传输、交换、存储、处理的过程中,我们必须采取相应的策略,进行数据保护。如设置密码和验证码、对数据加密、验证数据完整性、安装防火墙及安全软件、对数据进行备份等,确保信息的完整、可用、保密和可靠。在本节中,我们将了解如何使用密码保护数据。学习目标★理解数据加密和解密的概念及原理。★了解数据加密的历史。★会用Python实现简单的加密算法。★会分析生活中由密码引起的数据安全问题,理解对数据进行保护的意义。任务一解开网站账号被盗之谜数据聚集和共享为人们充分应用数据创造便捷的生活提供了条件,但在享受数据带来的便利的同时,也伴随着数据安全问题。本节我们将围绕“神秘密码之谜”项目展开学习,通过项目活动,学习数据加密和解密的知识,树立保护数据安全的意识。本项目主要包含“解开网站账号被盗之谜”和“让数据‘隐身’”两个任务。※活动1防范“盗窃”行为不少人有密码被盗的经历,这往往会导致个人信息泄露,甚至是财产损失。你是否有使用账号、密码的经验?请你与同学交流。密码密码是指用来核对用户ID以验证用户就是本人的一组字符。具体实验结果会根据计算机性能不同而有所不同。想一想,如果密码还有字母,破解的时间会变长吗?◦defjiemi():◦d1=datetime.datetime.now()#获取当前系统时间d1◦p=int(varin.get())#获取输入文本框的数字密码◦foriinrange(p+1):#从0循环到正确密码数值◦ifi==p:#如果密码相同◦d2=datetime.datetime.now()#获取当前系统时间d2◦d=d2-d1#取得时间差◦#在输出文本框中显示解密用时◦varout.set(str(d.seconds)+秒+str(d.microseconds/1000)+毫秒)varin和varout是程序中的两个文本框对象,分别用来接收输入的密码和显示解密所需时间。get和set是文本框的两个方法,分别用于接收文本框中的数据和在文本框中显示输出数据。示例1创建安全密码的一般技巧使用长度不少于8个字符的密码。密码长度越长越不容易被破解。在可能的情况下,尽量使用字母、数字和特殊字符(如$、#)相结合的密码。不要使用电话号码、身份证号码或生日等信息作为密码。不要使用整个用户ID或用户ID的一部分作为密码。不要使用字典中能找到的词语作为密码,即使是字母次序颠倒过来的常用词语也不可以。加密自古以来,在管理国家、指挥战斗或是经济来往中,都需要高效、安全的数据通信系统。古人就已会用很多办法将数据伪装起来,使得只有联络好的数据接收者才能读懂。比如,将数据刻在木板上,然后再覆上一层蜡,使其成为一个看上去很普通的刻写板;使用一套尺寸不等、形状各异的“阴符”,每支符都表示特定的含义等。这些都是数据的加密。加密就是将原始信息(数据)隐匿起来,使之在缺少特殊信息(数据)时不可读。原始信息(数据)称为明文,加密后的信息(数据)称为密文。将密文还原成明文的过程称为解密(或解码)。(摘自《六韬》(卷三)—龙韬·阴书)所谓“阴书”,实际上是一种军事文书,传递的方法更秘密些。其方法是:先把所要传递的机密内容完完整整地写在一编竹简或木简上,然后将这篇竹简或木简拆开、打乱,分成三份,称“一合而再离”。然后派三名信使各传递一份到同一个目的地。“阴书”被送到目的地后,收件人再把三份“阴书”按顺序拼合起来,于是“阴书”的内容便一目了然,称“三发而一知”。这种“阴书”保密性较好,且在某一角度上讲类似于移位密码的特性。因为即使某一信使被敌方抓获,“阴书”落入敌方手里,也得不到完整的情报。但也有其缺陷,由于原文被分成了三份,故一旦丢失一份,接受者也无法了解其原意。这种方式经过历代的演变,一直延续到明清时期仍有人使用。古人为了密上加密,还在“阴书”上用藏头诗、藏尾诗、回文诗、诗谜、哑谜、密写等多种巧妙的方法来传递信息。※活动2揭秘“隐身术”恺撒在征服高卢、袭击日耳曼和不列颠的多次战斗中频繁使用加密技术。苏托尼厄斯在公元2世纪写的《恺撒传》中对恺撒用过的一种加密技术进行了详细的介绍。恺撒只是简单地将明文中的每一个字母用字母表中该字母后的第3个字母替换。例如,将明文中的a用d替换,b用e替换,....z用c替换,这就是恺撒密码。拉丁语:veni,vidi,vici翻译成英文就是“Icame,Isaw,Iconquered”。这句话出自恺撒大帝征服潘特斯王国后写给元老院的信。ord()函数主要用来返回对应字符的ascii码,chr()主要用来表示ascii码对应的字符◦大写:◦A→65,B→66,C→67,D→68,E→69,◦F→70,G→71,H→72,I→73,J→74,◦K→75,L→76,M→77,N→78,O→79,◦P→80,Q→81,R→82,S→83,T→84,◦U→85,V→86,W→87,X→88,Y→89,Z→90◦小写:◦a→97,b→98,c→99,d→100,e→101,f→102,◦g→103,h→104,i→105,j→106,k→107,l→108,◦m→109,n→110,o→111,p→112,q→113,r→114,◦s→115,t→116,u→117,v→118,w→119,x→120,y→121,z→122defCaesarCipher():#“加密”按钮激发函数c=mingwen.get(0.0,end)[:-1]#获取mingwen对象的内容(明文)b=miwen.delete(0.0,end)#清空miwen对象的内容foriinrange(len(c)):#获取明文内容的每一个字符,并加密if'a'=c[i]='w'or'A'=c[i]='W':#判断a~w或A~W间的字母b=b+chr(ord(c[i])+3)#生成密文elif'x'=c[i]='z'or'X'=c[i]='Z':#判断x~z或X~Z间的字母b=b+chr(ord(c[i])-23)#生成密文else:b=b+c[i]#字母以外的明文不变miwen.insert(0.0,b)#在miwen对象中显示结果mingwen和miwen是两个文本框对象,用于接收待加密的文本和显示加密后的密文。get方法用于接收文本框中的数据,delete方法用于删除文本框中的内容,insert方法用于将数据插入文本框内。加密算法操作中的一组数字被称为密钥。比如,恺撒密码的密钥为3,加密和解密使用同一个密钥,被称为对称加密体制。示例2加法密码加法密码又被称为移位密码。在加法密码算法中,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推,X将变成A,Y变成B,Z变成C。恺撒密码作为一种最为古老的对称加密体制,在古罗马的时候已经很流行,它是加法密码的典型代表。用Python语言实现加密算法时,明文和密文都被抽象为字符串类型的数据Python中的字符串由一串字符组成,用引号引起来表示,比如“abCEd”。类似于列表的操作,我们可以指向或操作字符串中的某一个字符,比如c[0]表示字符串中的第一个字符。我们还可以用Python系统函数对数据进行特定的操作,len函数可以获取字符串中字符的个数ord函数可以将字符类型的参数转换为对应的整数值,chr函数可以将整数类型的参数转换为对应的字符。了解密码安全与加密、解密的技术能够帮助我们保护个人隐私。同时,我们也要从自己做起,遵守相关法律和必要的道德规范,共同维护健康、良好的数据环境。拓展知识当今数字时代,数据已经广泛应用于国家安全、公共治理、企业发展、民生改善等诸多领域,大大提高了人们工作、生活的便利程度,但各种数据也存在安全风险。为此,国家出台多部法律,大力实施数据保护,维护国家安全和网络秩序,保障社会、公民利益,促进经济社会信息化健康发展。如2017年6月1日起施行的《中华人民共和国网络安全法》,明确要求网络运营者应当按照网络安全等级保护制度的要求,履行安全保护义务,保障网络免受干扰、破坏或者未经授权的访问,防止网络数据泄露或者被窃取、篡改。《中华人民共和国刑法》第二百八十五条至第二百八十七条,对非法侵入计算机信息系统,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,利用计算机实施金融诈骗、盗窃、贪污、挪用公款、窃取国家秘密等行为进行了量刑定罪。单元学习评价10110100(2)=()(10)3D(16)=()(10)255(10)=()(16)100(10)=()(2)E2(16)=()(2)11100101(2)=()(16)18061FF110010011100010E5总结任意R进制数(R为大于等于2且不等于10的正整数,下同)转换为十进制数时,都可采用方法。十进制数转换为R进制数时,都可采用方法。一段时长为1分钟,采样频率为44.1kHz,量化位数为16位,双声道立体声的无压缩音频(如基于PCM编码的wav格式),占用的存储空间是MB(精确到0.1)。按权展开求和法除R取余法10.1解析:采样频率44.1kHz,量化位数16位,意味着每秒采集数据44.1k个,每个数据占2字节,(量化位数是16位,按照计算机术语来看,1位指的是一个二进制位,就是1bit,8bit是一字节,那么16位就是2字节)这是一个声道的数据,双声道再乘以2,最后结果再乘以60秒,就是44.1×1000×2×2×60=10584000字节,1MB=1024×1024=1048576字节,所以一分钟的存储容量为10584000/1048576=10.09MB,约为10.1MB。3.人、狼、羊、菜过河问题:有一个人带着一只狼、一只羊和一捆白菜,来到一条河边,河边只有一条小船,人每次过河最多只能带一样,如果人不在现场,狼就要吃羊,羊就要吃菜。他应该怎样安排过河呢?请完成下面的“树”结构分析图,帮他找到可行的过河方案。提示:可约定对象在左岸用0表示,在右岸用1表示。