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获取当前时间的方法
Jan 14 Python
Python操作SQLite简明教程
Jul 10 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Python交互环境下实现输入代码
Jun 22 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
基于python plotly交互式图表大全
Dec 07 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
python 弧度与角度互转实例
Apr 15 Python
Python轻量级web框架bottle使用方法解析
Jun 13 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中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
js变量以及其作用域详解
2020/07/18 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python实现xlsx文件分析详解
2018/01/02 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
在双python下设置python3为默认的方法
2018/10/31 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
python实现无边框进度条的实例代码
2020/12/30 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
高三历史教学反思
2014/01/09 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
校运动会广播稿300字
2014/10/07 职场文书
稽核岗位职责范本
2015/04/13 职场文书
酒店宣传语大全
2015/07/13 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA