实验目的 | 1、完成第一个入门加解密——凯撒密码 2、完成当下较为流行的三重DES加解密技术 3、熟悉所学的实际运用方向 |
实验准备 | 硬件:计算机或笔记本电脑 操作系统:Mac操作系统 IDE环境:Eclipse 程序语言:Java |
一、实验基本思想
- 入门密码实现——凯撒密码
·原理:明文中所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是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、最后说到对密码学和信息安全的好奇与乐趣,莫过于一部叫做《没有绝对安全的系统》这部电影,介绍了密码破译原理、社会工程学、香肠攻击、午餐攻击等多个有趣的内容,让我第一次产生了对于黑客的好奇,也希望随着后续学习的不断深入,能够揭开密码攻防的神秘面纱。 最后以电影中的一句话作为结束吧。 “每个人都只想看到他想看到的,而人类才是系统中最大的漏洞。” |
|
标签:加密,DES,加解密,解密,密码,三重,密钥,密码学
来源: https://blog.csdn.net/xy969527367/article/details/115395816