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 相关文章推荐
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
Python中创建字典的几种方法总结(推荐)
Apr 27 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
Python telnet登陆功能实现代码
Apr 16 Python
python判断是空的实例分享
Jul 06 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
用Python创建简易网站图文教程
Jun 11 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下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
关于this和self的使用说明
2010/08/01 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python装饰器代码深入讲解
2021/03/01 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
办护照工作证明
2014/10/01 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
计划生育汇报材料
2014/12/26 职场文书
财务会计岗位职责
2015/02/03 职场文书
心灵捕手观后感
2015/06/02 职场文书
庆七一主持词
2015/06/29 职场文书
贷款担保书范本
2015/09/22 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL