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之折腾一下目录
Oct 24 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
Python OpenCV实现鼠标画框效果
Aug 19 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
python 如何在list中找Topk的数值和索引
May 20 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/05/15 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
会计与审计专业大专生求职信
2013/10/03 职场文书
大学生毕业自我评价范文分享
2013/11/07 职场文书
公司同意接收函
2014/01/13 职场文书
党课培训主持词
2014/04/01 职场文书
小学生学习保证书
2015/02/26 职场文书