python实现凯撒密码
作者:fadeless_3 时间:2022-10-13 07:31:44
在密码学中,凯撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。
尽管是最简单的加密技术,但那该怎么在python中如何现实呢?
代码如下:
def ask():
while True:
print("Welcome to you coming!")
print("you can choose mode : encrypt(e) or decrypt(d)") #有解密和加密模式
print("If you choose encrypt ,you can lock the message!") #加密提示
print("If you choose decrypt ,you can unlock the message!") #解密提示
print("If you wanna exit , input 'q'!!") #退出提示
mode = input("choose:").lower() #将输入的模式进行变换(从大写变小写,小写部分不变)
if mode in 'encrypt e decrypt d q'.split(): #当模式是被要求的encrypt e(加密模式)decrypt d(解密模式) q(退出)时进行下一步操作
#print(mode) #打印输入的模式
return mode #将mode的值作为返回值
else:
print('Please input right option!!') #输出提示
def getKey(mode):
key = 0 #设置默认的key
while key <= 0 or key >= 26: #限制key的范围在(1-25以内的数)
try: #这里进行异常处理,将非整数类型的输入进行错误提示打印
key = int(input("Please input your key:(1-26)"))
except:
print("Please input correct number!!")
#对解密的密匙进行变换
if mode == 'd' or mode == 'decrypt':
key = -key
return key
def getMessage(key):
#输入信息
while True:
informetion = input("Please input message!!") #输入要解密或者加密的信息
if informetion.isalpha(): #判断输入的字符串是否为纯字母
break
else:
print("Please input continuous character!!!") #输错提示
message = '' #设置输出的初始值
for x in informetion: #将输入信息里的进行逐一字母加密/解密
num = ord(x) #将单一字符通过ascii表进行转换,将字母转换为数字
num += key #加上key的值进行下列运算
if x.isupper(): #判断是否是大写字母
if num > ord('Z'): #对超出ascii对应数值的范围进行处理
num -=26
print(message)
elif num < ord('A'):
num +=26
print(message)
elif x.islower(): #判断是否小写字母
if num > ord('z'):
num -=26
elif num < ord('a'):
num +=26
message += chr(num) #将单一字符通过ascii表进行转换,将数字转换为字母
return message #返回message的值
if __name__=="__main__": #主程序
mode = ask() #将ask()返回值存于mode变量中
if mode == 'q': #进行退出判断
print('welcome!!')
else:
key = getKey(mode) #将mode变量的值带入getKey函数中运行,运行后将key的值存入到key变量中
last = getMessage(key) #将key变量的值带入到getMessage函数中,运行后将message的值存入到last变量中
print(last)
来源:https://blog.csdn.net/lovestudy_/article/details/115683626
标签:python,凯撒密码
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2022-06-08 09:09:28
![](https://img.aspxhome.com/file/2023/1/121081_0s.png)
Python调用C语言的方法【基于ctypes模块】
2021-03-08 20:31:24
tensorflow 加载部分变量的实例讲解
2023-03-27 03:19:56
vue项目中如何调用多个不同的ip接口
2024-04-10 10:32:37
如何实现python爬虫爬取视频时实现实时进度条显示
2022-07-01 04:17:12
![](https://img.aspxhome.com/file/2023/4/78794_0s.png)
浅谈利用numpy对矩阵进行归一化处理的方法
2021-10-12 01:22:41
Python学习pygal绘制线图代码分享
2022-12-02 10:51:48
![](https://img.aspxhome.com/file/2023/6/82956_0s.png)
Python解释器及PyCharm工具安装过程
2021-02-23 08:21:51
![](https://img.aspxhome.com/file/2023/8/118508_0s.jpg)
Python 文件操作技巧(File operation) 实例代码分析
2021-03-12 00:02:50
基于javascript的Form表单验证
2024-04-10 16:20:03
![](https://img.aspxhome.com/file/2023/3/136703_0s.jpg)
浅析SQL Server 2008企业级新特性
2008-11-24 17:01:00
Python学习之流程控制与条件判断总结
2023-08-20 13:37:02
![](https://img.aspxhome.com/file/2023/8/70148_0s.jpg)
case 嵌套查询与连接查询你需要懂得
2024-01-24 02:11:02
![](https://img.aspxhome.com/file/2023/8/96208_0s.png)
vue中使用svg封装全局消息提示组件
2024-04-09 10:48:24
![](https://img.aspxhome.com/file/2023/8/139738_0s.jpg)
python使用socket高效传输视频数据帧(连续发送图片)
2021-04-14 23:17:40
![](https://img.aspxhome.com/file/2023/9/130549_0s.png)
JS 调试中常见的报错问题解决方法
2023-07-16 07:42:13
VsCode中ctrl+s后会在当前目录下自动生成dist目录的方法
2023-04-25 09:19:41
![](https://img.aspxhome.com/file/2023/4/123734_0s.png)
PyQt5根据控件Id获取控件对象的方法
2023-02-13 15:22:50
Django 生成登陆验证码代码分享
2021-07-31 06:48:21
![](https://img.aspxhome.com/file/2023/8/79398_0s.jpg)
asp中最新新闻显示new图片的实现代码
2012-11-30 20:31:42