概念及原理

根据百度百科上的解释,凯撒密码是一种古老的加密算法。

密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。 现今又叫“移位密码”,只不过移动的为数不一定是3位而已。

密码术可以大致别分为两种,即易位和替换,当然也有两者结合的更复杂的方法。在易位中字母不变,位置改变;替换中字母改变,位置不变。

将替换密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。

苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替换密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做恺撒移位密码,或简单的说,恺撒密码。

在密码学中,凯撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。

说了这么多,相信大家可能也有点晕了,下面这张图加密方法就是错三个位来实现加密功能

(1)  设计思想:

  1. 由于输入的是一串英文字符,所以我们用String类来编写,况且String类有许多方法可以调用
  2. 错位需要对每个字符进行操作,可以把字符串转换为字符数组,调用的是string类的toCharArray方法
  3. 由于string类也是采用Unicode字符集,所以我们进行错位操作时只需读取一个字符,然后与数字3相加,再转换为char类型,就实现了错3位加密操作,解密则减3.
  4. 在加密操作中,如果加密的是字母表最后三个,则必须实现循环操作,即X加密后是A,Y加密后是B,Z加密后是C,实现这个就要用到ASCII码,当读到XYZ时,加密则是减去23后转换为char类型,当然,解密时读到ABC加上23即可

(2)  程序流程图:

实现过程

我们定义个key=13,此时我们对字符串This is my secret message进行加密

import pyperclipmessage = 'This is my secret message'#保存加密或解密的字符串
key = 13#保存加密密钥的整数

mode = 'encrypt'LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'translated = ''message = message.upper()for symbol in message:if symbol in LETTERS:num = LETTERS.find(symbol)if mode == 'encrypt':num = num + keyelif mode == 'decrypt':num = num - keyif num >= len(LETTERS):num = num - len(LETTERS)elif num < 0:num = num + len(LETTERS)translated = translated + LETTERS[num]else:translated = translated + symbolprint(translated)pyperclip.copy(translated)

打印结果如下:

GUVF VF ZL FRPERG ZRFFNTR
[Finished in 0.8s]

我们来对上面这部分代码进行分析

我们可以看到,第一行调用了一个pyperclip的模块,我们需要下载这个模块,很简单,安装一个pip,直接输入pip install pyperclip即可完成安装

message = 'This is my secret message'#保存加密或解密的字符串
key = 13#保存加密密钥的整数

message指定了用来保存加解密的字符串

而key用来保存加密密钥

message = message.upper()

调用了一个upper函数,将加解密字符串全部变成大写字母

后面的实现过程很简单,判断mode值是否为encrpy,然后对字符进行移位

破解原理及实现

我们将加密后的字符串进行破解,实现原理如下:

import pyperclipmessage = 'GUVF VF ZL FRPERG ZRFFNTR'LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'for key in range(len(LETTERS)):translated = ''for symbol in message:if symbol in LETTERS:num = LETTERS.find(symbol)num = num - keyif num < 0:num = num + len(LETTERS)translated = translated + LETTERS[num]else:translated = translated + symbolprint('Key #%s:%s'%(key,translated))

打印结果如下:

Key #0:GUVF VF ZL FRPERG ZRFFNTR
Key #1:FTUE UE YK EQODQF YQEEMSQ
Key #2:ESTD TD XJ DPNCPE XPDDLRP
Key #3:DRSC SC WI COMBOD WOCCKQO
Key #4:CQRB RB VH BNLANC VNBBJPN
Key #5:BPQA QA UG AMKZMB UMAAIOM
Key #6:AOPZ PZ TF ZLJYLA TLZZHNL
Key #7:ZNOY OY SE YKIXKZ SKYYGMK
Key #8:YMNX NX RD XJHWJY RJXXFLJ
Key #9:XLMW MW QC WIGVIX QIWWEKI
Key #10:WKLV LV PB VHFUHW PHVVDJH
Key #11:VJKU KU OA UGETGV OGUUCIG
Key #12:UIJT JT NZ TFDSFU NFTTBHF
Key #13:THIS IS MY SECRET MESSAGE
Key #14:SGHR HR LX RDBQDS LDRRZFD
Key #15:RFGQ GQ KW QCAPCR KCQQYEC
Key #16:QEFP FP JV PBZOBQ JBPPXDB
Key #17:PDEO EO IU OAYNAP IAOOWCA
Key #18:OCDN DN HT NZXMZO HZNNVBZ
Key #19:NBCM CM GS MYWLYN GYMMUAY
Key #20:MABL BL FR LXVKXM FXLLTZX
Key #21:LZAK AK EQ KWUJWL EWKKSYW
Key #22:KYZJ ZJ DP JVTIVK DVJJRXV
Key #23:JXYI YI CO IUSHUJ CUIIQWU
Key #24:IWXH XH BN HTRGTI BTHHPVT
Key #25:HVWG WG AM GSQFSH ASGGOUS
[Finished in 0.2s]

我们可以看出,Key#13即为我们所求的答案

您可以考虑给博主来个小小的打赏以资鼓励,您的肯定将是我最大的动力。thx.

微信打赏

支付宝打赏

作  者: Angel_Kitty
出  处:http://www.cnblogs.com/ECJTUACM-873284962/
关于作者:潜心机器学习以及信息安全的综合研究。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击右下角【推荐】推荐一下该博文。您的鼓励是作者坚持原创和持续写作的最大动力!

凯撒密码加解密及破解实现原理相关推荐

  1. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  2. C语言实现凯撒密码加解密

    凯撒密码 加密即把a-z或A-Z的字母向后移动n个字符实现加密,若n=3的话,a对应d,z对应c,如此循环: 解密刚好和加密相反,加密向后移动的话解密就向前移动. 加密的C代码如下: #include ...

  3. 凯撒密码加密解密C语言详细代码

    凯撒密码加密解密C语言详细代码 凯撒密码 又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod ...

  4. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  5. python 凯撒密码加密和暴力破解

    def decrypt(message):#凯撒密码破解SYMBOLS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'#循环遍历所有可能的KEYfor key in range(len(SY ...

  6. 维吉尼亚密码加解密与破解

    实验目的 1.进一步理解维吉尼亚密码的加解密原理 2.进一步理解维吉尼亚密码的缺陷和利用方法 3.提高编程实践能力 实验要求 1.实现维吉尼亚加解密函数 2.破解维吉尼亚加密的密文 实验步骤 1.维吉 ...

  7. Python编程:实现凯撒密码加密解密

    凯撒密码 原理: 通过把字母移动一定的位数来实现加解密 明文中的所有字母从字母表向后(或向前)按照一个固定步长进行偏移后被替换成密文. 例如: 当步长为3时,A被替换成D,B被替换成E,依此类推,X替 ...

  8. 凯撒密码的加密,破解,以及暴力破解法

    凯撒密码的加密 #include <stdio.h>int main() { char a[80],b[80];//a为原码,b为加密 int i,k; scanf("%d&qu ...

  9. Matlab凯撒密码加密解密

    Pratice problem: Bob wants to send the message "Start sending messages at 8:30" to Alice i ...

最新文章

  1. 顺序表的结构和9个基本运算算法
  2. S3C6410禁用和启用触摸屏
  3. 【正一专栏】希望才是深深让人绝望的东西-论国足
  4. 1.6 Dropout 正则化-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  5. SAP中创建分部机构凭证号码并且按年度编号
  6. Postgresql日志配置
  7. 解调去载波后均衡信道与实际信道的关系
  8. 怎样配置Tomcat环境变量
  9. mybaits源码分析(八) StatementHandler的详解
  10. 代码埋点、可视化埋点、无埋点几种数据埋点方案的分析报告
  11. 无需会员将有道云笔记脑图转换xmind
  12. 矿 第一次数据结构实验
  13. CAD进阶练习(二)
  14. java web 编辑器_22个所见即所得在线 Web 编辑器
  15. 分享美食菜谱,可以收藏哦
  16. 我爱Flask框架之Flask简介与URL和视图介绍
  17. ❤排序算法——冒泡排序,鸡尾酒排序,选择排序❤
  18. 【木马分析】远控盗号木马伪装成850Game作恶
  19. 关于《Windows传统蒙古文系统》新探索系列篇(二)
  20. 用c#求一元二次方程

热门文章

  1. 在计算机系统中对文件执行彻底删除,怎么让电脑删除文件时可以直接彻底进行删除...
  2. Linux内核踩坑笔记
  3. 小刚的Android研究笔记~在未开启USB调试的Android手机绕过锁屏密码
  4. 坦克大战第一节——画出自己的坦克(新手篇)
  5. word-wrap长单词与URL地址自动换行
  6. 消除红眼效应及matlab实现
  7. 南卡的电容笔对比倍思哪个好?南卡和倍思电容笔测评
  8. 他大叫了一声:“筋斗云”。。。
  9. android快速充电,快到令人发指 外媒评14款安卓机充电速度
  10. 瑞吉外卖项目的购物车sub操作