Python实现的凯撒密码算法示例


Posted in Python onApril 12, 2018

本文实例讲述了Python实现的凯撒密码算法。分享给大家供大家参考,具体如下:

一 介绍

凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。他的原理很简单,说到底就是字母于字母之间的替换。下面让我们看一个简单的例子:“baidu”用凯撒密码法加密后字符串变为“edlgx”,它的原理是什么呢?把“baidu”中的每一个字母按字母表顺序向后移3位,所得的结果就是刚才我们所看到的密文。

二 代码

# -*- coding:utf-8 -*-
import os
#==================================================================#
#     凯撒密码(caesar)是最早的代换密码,对称密码的一种        #
#  算法:将每个字母用字母表中它之后的第k个字母(称作位移值)替代      #
#==================================================================#
def encryption():
  str_raw = raw_input("请输入明文:")
  k = int(raw_input("请输入位移值:"))
  str_change = str_raw.lower()
  str_list = list(str_change)
  str_list_encry = str_list
  i = 0
  while i < len(str_list):
    if ord(str_list[i]) < 123-k:
      str_list_encry[i] = chr(ord(str_list[i]) + k)
    else:
      str_list_encry[i] = chr(ord(str_list[i]) + k - 26)
    i = i+1
  print ("加密结果为:"+"".join(str_list_encry))
def decryption():
  str_raw = raw_input("请输入密文:")
  k = int(raw_input("请输入位移值:"))
  str_change = str_raw.lower()
  str_list = list(str_change)
  str_list_decry = str_list
  i = 0
  while i < len(str_list):
    if ord(str_list[i]) >= 97+k:
      str_list_decry[i] = chr(ord(str_list[i]) - k)
    else:
      str_list_decry[i] = chr(ord(str_list[i]) + 26 - k)
    i = i+1
  print ("解密结果为:"+"".join(str_list_decry))
while True:
  print (u"1. 加密")
  print (u"2. 解密")
  choice = raw_input("请选择:")
  if choice == "1":
    encryption()
  elif choice == "2":
    decryption()
  else:
    print (u"您的输入有误!")

三 运行结果

 Python实现的凯撒密码算法示例

Python 相关文章推荐
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
Python端口扫描简单程序
Nov 10 Python
Python实现单词翻译功能
Jun 06 Python
Python微信公众号开发平台
Jan 25 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
Django中create和save方法的不同
Aug 13 Python
pytorch实现线性拟合方式
Jan 15 Python
python 实现音频叠加的示例
Oct 29 Python
Python中re模块的元字符使用小结
Apr 07 Python
python merge、concat合并数据集的实例讲解
Apr 12 #Python
Python实现的维尼吉亚密码算法示例
Apr 12 #Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 #Python
python监控进程脚本
Apr 12 #Python
使用Eclipse如何开发python脚本
Apr 11 #Python
一份python入门应该看的学习资料
Apr 11 #Python
Python实现时钟显示效果思路详解
Apr 11 #Python
You might like
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
利用python爬取软考试题之ip自动代理
2017/03/28 Python
python的re正则表达式实例代码
2018/01/24 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
小学家长评语大全
2014/04/16 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2015年党总支工作总结
2015/05/25 职场文书
校运会班级霸气口号
2015/12/24 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js