使用凯撒密码实现加密解密

在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密恺撒变换变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。(资料来源:百度百科)

#加密
a=input()
for i in range(len(a)):if ord('a')<=ord(a[i])<=ord('z'):print(chr((ord(a[i])+3-ord('a'))%26+ord('a')),end="")elif ord('A')<=ord(a[i])<=ord('Z'):print(chr((ord(a[i])+3-ord('A'))%26+ord('A')),end="")else:print(a[i],end="")#解密
etxt = input('')
for p in etxt:if 'a' <= p <= 'z':print(chr(ord('a')+(ord(p)-ord('a')-3)%26), end='')elif 'A' <= p <= 'Z':print(chr(ord('A')+(ord(p)-ord('A')-3)%26), end='')else:print(p, end='')

原文:dtuhgc
加密后:gwxkjf

恺撒密码也是一种非常容易破解的加密方式。可能有两种情况需要考虑:

(1)攻击者知道(或者猜测)密码中使用了某个简单的替换加密方式,但是不确定是恺撒密码;

(2)攻击者知道(或者猜测)使用了恺撒密码,但是不知道其偏移量。

对于第一种情况,攻击者可以通过使用诸如频率分析或者样式单词分析的方法, [3]
 马上就能从分析结果中看出规律,得出加密者使用的是恺撒密码。

对于第二种情况,解决方法更加简单。由于使用恺撒密码进行加密的语言一般都是字母文字系统,因此密码中可能是使用的偏移量也是有限的,例如使用26个字母的英语,它的偏移量最多就是25(偏移量26等同于偏移量0,即明文;偏移量超过26,等同于偏移量1-25)。因此可以通过穷举法,很轻易地进行破解。其中一种方法是在表格中写下密文中的某个小片段使用所有可能的偏移量解密后的内容——称为候选明文,然后分析表格中的候选明文是否具有实际含义,得出正确的偏移量,解密整个密文。例如,被选择出的密文片段是"EXXEGOEXSRGI",从右表中的候选明文,我们可以很快看出其正确的偏移量是4。也可以通过在每一个密文单词的每一个字母下面,纵向写下整个字母表其他字母,然后可以通过分析,得出其中的某一行便是明文。

当然,我们也可以让字符串加密后不像传统中凯撒加密后得到的结果.举例如下:

​
do=input()
#encrypt:1    decrypt:0    test input:zaqwwertfyu    test output:[125, 100, 116, 122, 122, 104, 117, 119, 105, 124, 120]
def enc():plaintext=input('input string to encrypt \t') dis=int(input('input distance \t'))    pyout=[]for ch in plaintext:ordvalue=ord(ch)ciphervalue=ordvalue+dispyout+=[ciphervalue]return pyoutdef dec():codetext=eval(input('input code to decrypt \t')) dis0=int(input('input distance \t'))  textout=''for ch0 in codetext:ciphervalue=ch0-dis0pyoutstr=chr(ciphervalue)textout+=(pyoutstr)return textoutif do =='1':print(enc())
else:print(dec())​

当然了,它只能加密英语字符串.

Python字符串的加密与解密相关推荐

  1. Web.config中连接字符串的加密和解密

    Web.config中连接字符串的加密和解密  我们采用命令行的方式进行加密和解密.使用ASP.NET2.0提供的命令行工具aspnet_regiis.exe,该应用程序位系统目录下Microsoft ...

  2. java 字符 加密_Java 字符串的加密与解密

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了保证程序的安全,经常需要用到数据加密的方法.Java 中提供了专门用于加密运算的类和接口. 除了使用加密类和接口外,还可以通过多种方式实现字符串的加密 ...

  3. DES加密和解密工具,可以对字符串进行加密和解密操作

    DES加密和解密工具,可以对字符串进行加密和解密操作 import java.io.UnsupportedEncodingException;import java.security.Key;impo ...

  4. java 异或加密 字符串_Java 字符串的加密与解密

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了保证程序的安全,经常需要用到数据加密的方法.Java 中提供了专门用于加密运算的类和接口. 除了使用加密类和接口外,还可以通过多种方式实现字符串的加密 ...

  5. Python 的AES加密与解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现. python 在 Windows下使用A ...

  6. Python 简单的加密和解密

    今天来说说简单的加密和解密吧,我们在PyCharm中开启一个新的project,起名随意,之后创建一个python file名字就叫做encryption.py吧. 首先我们知道在python中,or ...

  7. C语言实现字符串的加密和解密

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

  8. autojs加解密,文本/字符串的加密和解密脚本源码分享

    说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...

  9. C语言中对字符串的加密和解密

    在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息,加密的方式是将字符串中每个字符加上它在字符串中的位置和一个偏移值5,以字符串"mrsoft"为例,第一个字符 ...

最新文章

  1. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)
  2. FPGA之道(75)静态时序分析(一)基本概念介绍
  3. 青海高考成绩查询日期2021,2021年青海高考成绩什么时候出来 公布时间
  4. ACM入门之【读入、输出优化】
  5. SpringCloud实战4-Hystrix线程隔离请求缓存请求合并
  6. 大道至简第六章读后感
  7. python重复命令_Python简化重复命令教案
  8. C#LeetCode刷题之#1-两数之和(Two Sum)
  9. shl性格测试_德勤2021秋招网申Tips+SHL笔试原题
  10. linux 重启21端口命令,修改SSH默认远程端口为21号端口
  11. 关于重定向printf出错 Error[Pe020]: identifier FILE is undefined 解决方案
  12. UVA12676 Inverting Huffman
  13. 什么?古代也有程序员?
  14. 论文人强烈推荐必备的几个中英文文献网站
  15. 使用ffmpeg读取本地文件,进行推流
  16. 建立标准编码规则(二)-DiagnosticAnalyzer 增加诊断分析代码
  17. 写论文有哪些神网站?
  18. python 证书-Python 发送带自签名证书的 https 请求
  19. PET不干胶标签发展趋势
  20. 韩信点兵 中国剩余定理

热门文章

  1. c++11之智能指针
  2. iphone版 天行skyline_‎App Store 上的“KB SKyline”
  3. 深入理解oauth2框架,以及实际运用
  4. 跨年烟花代码加文案,确定不来看看吗
  5. 将PPT转换成PDF软件哪个最好用
  6. “苹果Mac OSX系统出现持久开机加载”解决方案
  7. 车联网安全学习之TBOX
  8. required autofocus
  9. 计算机考试试卷怎么做,试卷编写软件
  10. HCIA HCIP HCIE啥意思