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赋值操作方法分享
Mar 23 Python
python教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python根据区号生成手机号码的方法
Jul 08 Python
python实现web方式logview的方法
Aug 10 Python
python购物车程序简单代码
Apr 18 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python实现linux下抓包并存库功能
Jul 18 Python
Python使用while循环花式打印乘法表
Jan 28 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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站内搜索关键词变亮的实现方法
2014/12/30 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python之array赋值技巧分享
2019/11/28 Python
python关于调用函数外的变量实例
2019/12/26 Python
Python如何使用字符打印照片
2020/01/03 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
审计工作个人的自我评价
2013/12/25 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
收款委托书范本
2014/09/11 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
会议主持词开场白
2015/05/28 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python