密码学入门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,一经查实,立即删除!

相关文章

老李谈JVM内存模型

老李谈JVM内存模型 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。 J…

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

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

站点CSS样式不起作用,或仅仅有一部分起作用?随手记

事件:网页中使用了相同的样式,下半部分正常显示,上半部分样式所有丢失不能显示。解决:改动了相应的CSS样式文件的编码 这个是最没有想到的解决的方法。怎样调试:通过右键页面查看编码为UTF-8 或 GBK 看到样式正常显示&…

大数据--循序渐进的大数据(2)

一、Hdfs 架构 访问 (1) ----nameNode(2) |||dataNode每隔一段时间secondaryNameNode会将fsimage和edits进行合并产生心得fsimage;1、Hdfs 适用场景数据密集型并行计算计算密集并行计算2、不适合的场景HDFS不合适大量小文件的储存HDFS适用于高吞吐量,…

virtualbox 启动时Kernel driver not installed (rc=-1908) 错误的解决方法

virtualbox 启动时Kernel driver not installed (rc-1908) 错误的解决方法 网上的方法各种各样,结果绕山绕水一点用没有,就下面这句就行 sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart昨天更新了下系统&a…

ios开发之-继承的实现运用

// // main.m // 继承 ////#import <Foundation/Foundation.h> #import "Animal.h" #import "Cat.h" #import "Dog.h" #import "FeedMan.h"int main(int argc, const char * argv[]) {// Animal * animal [Animal new]; /…

查找字段 如何 过滤

dm.ADOTbBug 使用Filter 属性的话&#xff0c;不能包括 查找字段。 方法1 在过滤事件里 使用查找字段。 http://www.itdelphi.com/delphibbs/doc/2001/558361.htm 方法2 就是使用查找字段对应的KeyFields 为字段名。 比如查找字段是 部门名称&#xff0c;对应的数据集里KeyFiel…

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"。要求&#xff1a;&#xff08;1&#xff09;过滤所有的名字&#xff0c;去掉每个名字左右的空格和…

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

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

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

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

[linux驱动]linux驱动模块

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

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

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

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

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

underscorejs-groupBy学习

2.18 groupBy 2.18.1 语法 _.groupBy(list, iteratee, [context]) 2.18.2 说明 把list分为多个集合&#xff0c;iterator为分组的依据,返回值为Object list可以是数组、对象、字符串或arguments等iteratee为分组的依据.iterator的参数(value, key, list)iterator如果是function…

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

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

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&#xff0c;以下简称PS)模块作为传统的非常规模块(除FI、CO、MM、PP、SD之外的模块)之一&#xff0c;在最近几年在国内也得到的较为广泛的应用,与PS应用火热场景相对应的是PS内外部顾问的极度缺乏。这种缺乏一方面表现…

Java 冒泡排序的实现

实现原理&#xff1a; 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤&#xff0c;除了最后一个…

CLion for mac安装配置

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

solr后台界面介绍——(十一)

1.加一个collection的方法 复制solr-home下的collection1&#xff0c;修改名字为collection2。并且修改collection2文件夹中配置文件core.properties中的名字为collection2&#xff0c;重启服务器。 2.后台界面介绍 Dashboard 仪表盘&#xff0c;显示了该Solr实例开始启动运行的…