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群发邮件实例代码
Jan 03 Python
python局域网ip扫描示例分享
Apr 03 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
python 输出所有大小写字母的方法
Jan 02 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
如何使用python实现模拟鼠标点击
Jan 06 Python
Python 如何定义匿名或内联函数
Aug 01 Python
Python编写单元测试代码实例
Sep 10 Python
python Selenium 库的使用技巧
Oct 16 Python
Python生成pdf目录书签的实例方法
Oct 29 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
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
php实现简单爬虫的开发
2016/03/28 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
资产评估专业学生的自我鉴定
2013/11/14 职场文书
一名女生的自荐信
2013/12/08 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
工作保证书范文
2014/04/29 职场文书
热情服务标语
2014/10/07 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL