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,凯撒密码
0
投稿

猜你喜欢

  • 如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)

    2022-06-08 09:09:28
  • 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
  • 浅谈利用numpy对矩阵进行归一化处理的方法

    2021-10-12 01:22:41
  • Python学习pygal绘制线图代码分享

    2022-12-02 10:51:48
  • Python解释器及PyCharm工具安装过程

    2021-02-23 08:21:51
  • Python 文件操作技巧(File operation) 实例代码分析

    2021-03-12 00:02:50
  • 基于javascript的Form表单验证

    2024-04-10 16:20:03
  • 浅析SQL Server 2008企业级新特性

    2008-11-24 17:01:00
  • Python学习之流程控制与条件判断总结

    2023-08-20 13:37:02
  • case 嵌套查询与连接查询你需要懂得

    2024-01-24 02:11:02
  • vue中使用svg封装全局消息提示组件

    2024-04-09 10:48:24
  • python使用socket高效传输视频数据帧(连续发送图片)

    2021-04-14 23:17:40
  • JS 调试中常见的报错问题解决方法

    2023-07-16 07:42:13
  • VsCode中ctrl+s后会在当前目录下自动生成dist目录的方法

    2023-04-25 09:19:41
  • PyQt5根据控件Id获取控件对象的方法

    2023-02-13 15:22:50
  • Django 生成登陆验证码代码分享

    2021-07-31 06:48:21
  • asp中最新新闻显示new图片的实现代码

    2012-11-30 20:31:42
  • asp之家 网络编程 m.aspxhome.com