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 dict remove数组删除(del,pop)
Mar 24 Python
使用python绘制常用的图表
Aug 27 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
Python快速排序算法实例分析
Nov 29 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
tensorflow使用神经网络实现mnist分类
Sep 08 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
Python基于traceback模块获取异常信息
Jul 23 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
pandas 读取各种格式文件的方法
2018/06/22 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
python实现C4.5决策树算法
2018/08/29 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
python 实现多线程下载视频的代码
2019/11/15 Python
WxPython实现无边框界面
2019/11/18 Python
Numpy之reshape()使用详解
2019/12/26 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
签约仪式致辞
2015/07/30 职场文书
导游词之上海豫园
2019/10/24 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers