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中的自省(反射)详解
Jun 02 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
新手入门Python编程的8个实用建议
Jul 12 Python
django 环境变量配置过程详解
Aug 06 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
Python OpenGL基本配置方式
May 20 Python
Python可视化神器pyecharts绘制地理图表
Jul 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
什么是短波收听SWL
2021/03/01 无线电
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
Seajs源码详解分析
2019/04/02 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
wxPython实现画图板
2020/08/27 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
教师节标语大全
2014/10/07 职场文书
签字仪式主持词
2015/07/03 职场文书
改进工作作风心得体会
2016/01/23 职场文书