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聚类算法之DBSACN实例分析
Nov 20 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
详解python如何引用包package
Jun 07 Python
virtualenv介绍及简明教程
Jun 23 Python
如何更换python默认编辑器的背景色
Aug 10 Python
Pandas数据类型之category的用法
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设计模式之命令模式的应用详解
2013/05/21 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
php输入数据统一类实例
2015/02/23 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python引用计数操作示例
2018/08/23 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
公司培训心得体会
2014/01/03 职场文书
24岁生日感言
2014/01/13 职场文书
单位成立周年感言
2014/01/26 职场文书
离婚案件被告代理词
2015/05/23 职场文书
高一地理教学工作总结
2015/08/12 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python