恺撒密码的python实现介绍

六月ゝ 毕业季﹏ 提交于 2020-01-18 03:36:53

恺撒密码的python实现介绍

我的个人博客
本文介绍如何使用pythno实现恺撒密码的加密与解密,

恺撒密码

首先提一下恺撒密码,在密码学类对密码学有过简单的介绍,密码学(cryptography)是一种用来通信加密的手段,记得莫斯密码吗?那是其中的一种,恺撒密码属于古典密码,而现代密码更为复杂(比如MD5),而密码学也是CTF的一种类型题目。
密码学实际上简要概括就是明文通过加密得到密文的方式,现代密码学复杂的在于不能用明文到密码的方式得到相反的过程,当然恺撒密码并不属于这样。

恺撒密码加密与解密方式

恺撒密码较为简单,就是将明文的字母向右增加三个单位,比如abc——def。
一般特指移位数为3的为恺撒密码,其他则统称为移位密码,本程序可控制移位数目。

运行实现

源码放于资源
所以本文更多解释原理,从而自己实现或对照源码解读。简单的print函数不再说明
1. 预定义最大密码长度和内容
(源码的1-3行),变量名自定义即可,以及一个用来加解密的数组块。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
需要用到的函数
str_1 = len(str_2),len函数计数之类的作用
2. 一个决定加密/解密的选择程序
定义一个函数让用户选择需要加密还是解密,
需要用到的函数
def 函数名():
while 条件:if 条件:

if xxxx in 范围:
else:

程序内使用的是先将输入转化为小写然后再与加密解密的encrypt或者decrypt及其首字母对比而判断的,也可以直接使用yes或者no的方式或者选数字的方式进行选择,私以为后面比较简单。
然后再定义一个函数返回输入会比较方便,

def 函数名:
return input()

input()即为输入的,return将其作为函数结果值返回。
3.定义一个函数并接受玩家的密钥并判断是否符合规则
需要用到的函数
print(' %s ' % (变量)),这种用法比print( `变量名` )更好用,
前面提到过的if语句判断输入是否为空或者是否超过预定的最大值。
设定一个函数进行加密或解密,对前面设定的一些参数进行判断而方便执行后续操作
参数包括加密还是解密、输入的明文/密文、密钥(移位数)。
设定如果选择解密,key = -key,更为方便,无须更改更多的程序。
3. 使用字符串查找的方式以及数组来去加解密
str.find('xx')判断xx在字符串str的位置(第一次出现),若不存在返回值-1,因此可以再用if去判断是否某些字符不再英文字母内,这样非英文字母的字符皆不会被改动。
进行加解密时密钥与密文相加即可(由于2时写过key = -key所以如果是解密时key已经是负值了),
还有一个问题,注意自增的索引数是否超过输入的字符数,如果超过减去字符数,如果索引数小于0,加上即可。
然后定义一个变量接受处理后的字符即可。
至此,恺撒密码编写的程序基本完成,

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!