密码学入门1——凯撒密码和三重DES加解密

实验目的

1、完成第一个入门加解密——凯撒密码

2、完成当下较为流行的三重DES加解密技术

3、熟悉所学的实际运用方向

 

实验准备

硬件:计算机或笔记本电脑

操作系统:Mac操作系统

IDE环境:Eclipse

程序语言:Java

一、实验基本思想

  1. 入门密码实现——凯撒密码

 

 

·原理:明文中所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

·缺陷:密钥空间过小,一共只有26位字母的选择,也就是说,其轮换的变化一共也仅有26种。

·捷径攻击:可以通过频率分析的方法,根据统计每一个密文字母出现的频次,再结合英文实际的字母出现频次,可以大幅地提升破解推测速度。

 

 

2、三重DES算法

在课程学习中我们知道,随着美国国密标准DES日渐衰微,其密钥空间过小的弊病使得穷举式攻击变得容易。故而在DES算法的基础上进行改良的三重DES算法成为了较为优秀的选择。三重DES算法的本质是将DES重复3次,从而大大提高密钥空间,将原本56位的DES密钥长度,提高到56*3=168比特的3DES密钥长度。

tips:三重DES的本质是执行三次DES加密,那么就是【加密>加密>加密】吗?

答案是否定的,三重加密的内在是【加密>解密>加密】。而且值得注意的是,这里的三次加密解密操作的密钥都是不同的!

二、实验代码

1、凯撒密码

 

 

 

2、三重DES算法

2.1密钥生成和保存(对象序列和字节)

 

 

 

2.2对称密钥加密

 

2.3 对称密钥解密

 

三、实验结果

1、凯撒密码

 

 

在Run Configuration中设置我们的参数 “Hello World” 3

 

运行后,输出加密后的密文

 

回到run configuration界面,这次我们输入“密文” -3

 

运行后,解密成功!

 

 

2、对称密钥加解密以三重DES为例

2.1 对象序列

编写对称加密代码,运行后,在文件夹下生成一个key1.dat文件。

 

 

2.2 字节方式

运行密钥生成程序,我们可以看到密钥的内容:

 

生成了一个新的文件:keykb1.dat

 

运行后,生成如下字节串。

 

 

问题未能打印解密的Hello World

通过代码对比软件,分析发现是UTF8习惯写成UTF-8了,订正后错误解决。

  

  

 

四、实验总结

  1、在进行实验之前,再度回顾了关于对称加密算法的基础原理,发现又有了更为深刻的理解和认识。

·例如在凯撒密码中,我原本以为只是字符+偏移量就能简单实现,但是却忽略了26个字母在a之前和z之后的轮转问题。

·例如三重DES加密算法中,我们都知道本质是进行三次DES加密,但是三次加密不等于【加密>加密>加密】是【加密>解密>加密】。而且值得注意的是,这里的三次加密解密操作的密钥都是不同的!

 

  2、遇到问题是常见的,重要的是解决问题的方法。在没有报错却无法正常运行的时候,我尝试通过代码比对工具,快速的找到了存在问题的地方,相较于过去一行一行的检查,更为快速和精确的定位到了错误。

 

  3、最后说到对密码学和信息安全的好奇与乐趣,莫过于一部叫做《没有绝对安全的系统》这部电影,介绍了密码破译原理、社会工程学、香肠攻击、午餐攻击等多个有趣的内容,让我第一次产生了对于黑客的好奇,也希望随着后续学习的不断深入,能够揭开密码攻防的神秘面纱。

最后以电影中的一句话作为结束吧。

 

                       “每个人都只想看到他想看到的而人类才是系统中最大的漏洞。”

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

emqx 使用端口_数据传输、存储、展现,EMQ X + TDengine 搭建 MQTT 物联网数据可视化平台...

物联网数据采集涉及到大量设备接入、海量的时序数据传输,EMQ X 消息中间件与 TDengine 大数据平台的组合技术栈完全能够胜任场景中的海量时间序列监测数据的传输、存储和计算。数据入库后,往往需要其他方式如数据可视化系统将数据按照规则统计、展现出来…

python字符串去头尾_带你认识优秀的python代码

有一串长的字符串names "LI XIA , ZHAO MING ,LAO WANG *,DA XIONG >,LI MEI MEI, CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"。要求:(1)过滤所有的名字,去掉每个名字左右的空格和…

python学习笔记之装饰器、递归、算法(第四天)

参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/articles/4963027.html 一、冒泡算法实例: a [32,5,22,41,7,31,12,102,74,37,9,25] 1、方法1: c…

数字信号处理笔记1-信号与常见操作

年轻人,你对数学一无所知,你只是习惯了而已。 —冯诺伊曼 前言 本学期开始跟着实验室学习计算机视觉领域,而一个重要的基础知识就是《数字图像处理》,而数字信号处理作为一个大类,可以将数字图像处理理解为数字信号处…

[linux驱动]linux驱动模块

一,内核模块的概念 经常在内核驱动代码看到类似fs_init()等驱动初始化函数,那么这个和module_init()函数的差别在哪里,宏定义__define_initcall(level,fn)对于内核的初始化很重要,他指示编译器在编译的时候,将一系列初…

看我如何基于PythonFacepp打造智能监控系统

由于种种原因,最近想亲自做一个基于python&facepp打造的智能监控系统。 000:萌芽 1:暑假在家很无聊 想出去玩,找不到人。玩个lol(已卸载),老是坑人。实在是无聊至极,不过&#x…

c++ 遍历所有点且距离最短_编程小白暑期进阶笔记41-C语言数据结构与算法图遍历的应用...

基于广度优先遍历算法的应用思考题:(思考题答案:BFS(广度优先遍历)在一般的带权图中是不能解决最短路问题,了解BFS的都知道,BFS是根据节点到源节点之间的节点数遍历的,也就是先访问离源节点节点数最少的点。…

关于@WebServlet(“LoginServlet“)404 报错的解决办法 “请求的资源[/test/LoginServlet] 不可用”

关于WebServlet(“LoginServlet”)404 报错的解决办法 “请求的资源[/test/LoginServlet] 不可用” *一切事物的开头总是困难这句话,在任何一种科学上都是适用的。 * ——马克思 一个困扰了我n天的问题,终于终于还是解决了&#…

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建

ASP.NET MVCEF框架EasyUI实现权限管理系列(14)-主框架搭建 原文:ASP.NET MVCEF框架EasyUI实现权限管理系列(14)-主框架搭建ASP.NET MVCEF框架EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 (5):前台…

常用事务代码 sap_SAP_PS_事务代码

[转]SAP PS常用事务代码T-CODESAP项目系统(Project System,以下简称PS)模块作为传统的非常规模块(除FI、CO、MM、PP、SD之外的模块)之一,在最近几年在国内也得到的较为广泛的应用,与PS应用火热场景相对应的是PS内外部顾问的极度缺乏。这种缺乏一方面表现…

CLion for mac安装配置

前言 本文详细多图介绍 IntelliJ IDEA For Mac的激活教程,相当于永久激活 文件包百度云下载:(通过与熊论道网站解密) 熊曰:呋溫捕嘿誘襲氏樣溫住既非破哮誒襲非捕溫肉性盜森魚非襲啽蜜呦訴嘿溫類盜山寶住出森非喜誘捕發嗥既肉嗅…

功率信号与能量信号的超棒理解!

功率信号与能量信号的理解! 功率信号和能量信号一直是一个令我疑惑的概念,一个无限一个为零。但是下面令我茅塞顿开! ~~~分割线啊分割线~~~

[转载]AngularJS之Factory vs Service vs Provider

http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider http://tylermcginnis.com/angularjs-factory-vs-service-vs-provider/ 要注意的文章中,app.provider(...)里的代码有点出处,之后作者改过,但是转载的网站上图片…

C#学习笔记:预处理指令

C#和C/C一样,也支持预处理指令,下面我们来看看C#中的预处理指令。 #region 代码折叠功能,配合#endregion使用,如下: 点击后如下: 条件预处理 条件预处理可以根据给出的条件决定最终进行编译的代码&#xff…

【数字信号处理】 第二章、时域中的离散时间信号

前言 学而时习之,不亦乐乎? ——《论语学而》 Is it not pleasant to learn with a constant perseverance and application? 。 第二章 时域中的离散时间信号 一、离散信号的基本定义 1、两个基本类型 抽样数据类型:即模拟信号通过定周期进行采样…

开机流程与主引导分区(MBR)——鸟哥私房菜

在前篇随笔中,已经谈到了CMOS与BIOS,CMOS是记录各项硬件参数(包括系统时间、设备的I/O地址、CPU的电压和频率等)且嵌入到主板上面的存储器,BIOS是一个写入到主板上的韧体(韧体是写入到硬件上的一个软件程序…

ch12 GUI

《Head First Java 2nd Edition》 摘录 JFrame 代表屏幕上的一个窗口,可以把 buttons, checkboxes, test fields 等等界面相关的东西置于其上。它可以有一个有菜单项的菜单条。无论在哪个平台上,都有窗口图标,最小化、最大化和关闭窗口的按钮…

ARM寄存器

ARM处理器模式 用户模式(User):ARM处理器正常的程序执行状态 快速中断模式(FIQ):用于高速数据传输或通道处理 外部中断模式(IRQ):用于通用的中断处理 管理模式(Supervisor):操作系统使用的保护模式 数据访问终止模式(Abort):当数据或指令预取终止时进入该模式,可用于虚拟存储及…

修改shape数据 小数位数_【数据管理】Excel实用精华

点击上方蓝字关注星标★不迷路来源:从Excel小白到数据分析师这是一篇关于Excel中的小技巧但是都是精华,文中附有操作视屏简单易学上手快噢!01添加数据有效性_名称管理器数据有效性是对单元格或单元格区域输入的数据从内容到数量上的限制。对于…

ICMP:Internet控制报文协议

ICMP:Internet控制报文协议。是IP层的组成部分。传递差错报文或其他信息。 ICMP报文被封装在IP数据报内部:详细格式例如以下所看到的:个字段含义例如以下:8位类型。表示该ICMP报文的含义,如目的不可达、超时、请求回显…