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

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

 

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

 

 

猜你喜欢

转载自blog.csdn.net/xy969527367/article/details/115395816