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 12 Python
python实现决策树
Dec 21 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
python实现K最近邻算法
Jan 29 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
尝试使用Python爬取城市租房信息
Apr 12 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 图片上添加透明度渐变的效果
2009/06/29 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python服务器端收发请求的实现代码
2014/09/29 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
详解Python Socket网络编程
2016/01/05 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
基于python实现对文件进行切分行
2020/04/26 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
国培计划培训感言
2014/03/11 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
廉政承诺书范文
2015/04/28 职场文书
立春观后感
2015/06/18 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
详解PyTorch模型保存与加载
2022/04/28 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS