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使用urllib2提交http post请求的方法
May 26 Python
django 创建过滤器的实例详解
Aug 14 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
Python中常用信号signal类型实例
Jan 25 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
Python中安装easy_install的方法
Nov 18 Python
Python函数装饰器实现方法详解
Dec 22 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
python变量的作用域是什么
May 26 Python
使用pytorch 筛选出一定范围的值
Jun 28 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
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
php获取错误信息的方法
2015/07/17 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
快速查询Python文档方法分享
2017/12/27 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python序列化与数据持久化实例详解
2019/12/20 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
python中可以声明变量类型吗
2020/06/18 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
财务主管岗位职责
2014/02/28 职场文书
教师工作能力自我评价
2015/03/04 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书