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 测试实现方法
Dec 24 Python
python 简易计算器程序,代码就几行
Aug 29 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
自学python的建议和周期预算
Jan 30 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
django用户登录验证的完整示例代码
Jul 21 Python
python实现KNN分类算法
Oct 16 Python
解决Python pip 自动更新升级失败的问题
Feb 21 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
Admin generator, filters and I18n
2011/10/06 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
js实现抽奖效果
2017/03/27 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
python中使用enumerate函数遍历元素实例
2014/06/16 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python之str操作方法(详解)
2017/06/19 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python实现图片中文字分割效果
2019/07/22 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Python实现自动装机功能案例分析
2020/10/22 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
大学生职业生涯规划书模板
2014/01/18 职场文书
学生宿舍管理制度
2014/01/30 职场文书
日化店促销方案
2014/03/26 职场文书
小学生演讲稿大全
2014/04/25 职场文书
新教师教学工作总结
2015/08/12 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
Python实现抖音热搜定时爬取功能
2022/03/16 Python