什么是恺撒密码?如何用Python实现它(36)

小朋友们好,大朋友们好!

我是猫妹,一名爱上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。

加密密钥和解密密钥不同,属于非对称加密。

如果相同,属于对称加密。

程序逻辑:先判断字母是小写还是大小,然后以数值形式计算下相对于首字母的偏移量,再加上密钥和首字母数值,最后以字符形式输出。



好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [TOC] 常用密码技术 1 密码 1.1 发送者、接收者和窃听者 请想象一个Alice向Bob发送电子邮件的场景...
    强某某阅读 7,233评论 0 1
  • 总是习惯性将所有事情拖到ddl前一天晚上......(这是病,得治!!!!)实在是困得不行了&_&,好多内容还没写...
    小小怪吃吃吃阅读 14,353评论 0 5
  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 14,531评论 2 17
  • 字节和位 古典密码学 ① 替换法替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替...
    ___Kevin阅读 3,723评论 0 0
  • 描述 恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字...
    幸福修补匠阅读 5,259评论 0 1

友情链接更多精彩内容