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中列表的一些基本操作知识汇总
May 20 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
django 修改server端口号的方法
May 14 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
解决yum对python依赖版本问题
Jul 05 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
python程序输出无内容的解决方式
Apr 09 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
keras用auc做metrics以及早停实例
Jul 02 Python
Python实现视频自动打码的示例代码
Apr 08 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简单封装了一些常用JS操作
2007/02/25 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP错误处理函数
2016/04/03 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
Python的in,is和id函数代码实例
2020/04/18 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
如何基于Python按行合并两个txt
2020/11/03 Python
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
毕业自我鉴定
2013/11/05 职场文书
大学生社团活动总结
2014/04/26 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
pytorch实现手写数字图片识别
2021/05/20 Python
JavaScript文档对象模型DOM
2021/11/20 Javascript
浅析Python中的随机采样和概率分布
2021/12/06 Python