小朋友们好,大朋友们好!
我是猫妹,一名爱上Python编程的小学生。
欢迎和猫妹一起,趣味学Python。
今日主题
猫妹目前在看的,ycl Python等级考试五级教材,有一章是介绍恺撒密码的。
今天,咱们就学习下什么是恺撒密码,如何用Python实现它。
恺撒密码
在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。
它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
你懂了吗?
举个例子吧!
我们先看上图上半部分
明文ABCD~XYZ,密钥(加密规)则是+3,那么密文是DEF~XYZABC
加密规则可以使加3,也可以使加任意整数,如果超过26个字符,则需要对26取余。也就是上图的下半部分。
明文、密钥、密文、加密、解密
什么是明文呢?
没有加密的文字(或者字符串),一般人都能看懂的意思,属于密码学术语。
在通信系统中它可能是比特流,如文本、位图、数字化的语音或者数字化的视频图像等。
什么是密钥呢?
密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。
密钥分为对称密钥与非对称密钥。
什么是密文呢?
加了密的文字,明文是加密之前的文字。
加密这个词有时指密文,但通常用来指加密的方法。对明文施加某种伪装或变换后的输出。
也可理解为不可直接理解的字符或比特集。但可通过算法还原的被打乱的消息,与明文相对。
什么是加密呢?
将明文转换为密文的过程就是加密。
什么是解密呢?
将密文转换为明文的过程就是加密。
ASCII
ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。
ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
这128个字符分为可显示字符和控制字符。
可显示字符,其编号范围是32-126(0x20-0x7E),共95个字符。
控制字符,其编号范围是0-31和127(0x00-0x1F和0x7F),共33个字符。
26个字符大小写用的就是ASCII编码。
a~z,0x61~0x7a。
A~Z,0x41~0x5a。
chr()和ord()
chr()函数
用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。返回值是当前整数对应的 ASCII 字符。
该函数的返回值为字符串形式。例如,输入:chr(90) ,输出为 ‘Z’ 。
ord()函数
与chr()函数对应,输入ASCII字符表中字符的字符串形式,返回在字符表中的排序位次。
例如,输入:ord(“Z”),输出为 90 。
用chr和ord打印26字母大小写以及其ASCII值
Python实现恺撒密码加密和解密
有了之前的学习,我们可以用Python实现恺撒密码的加密和解密啦!
假设咱们要对26个英文字符(包括大写和小写)进行加密,加密方式凯斯密码,加密密钥是+4,解密密钥是-4。
加密密钥和解密密钥不同,属于非对称加密。
如果相同,属于对称加密。
程序逻辑:先判断字母是小写还是大小,然后以数值形式计算下相对于首字母的偏移量,再加上密钥和首字母数值,最后以字符形式输出。
好了,我们今天就学到这里吧!
如果遇到什么问题,咱们多多交流,共同解决。
我是猫妹,咱们下次见!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net