实验三 敏捷开发与XP实践
Java密码学算法学习
凯撒密码学习:
- 原理:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为一个变换:c≡m+k mod n (其中n为基本字符个数)同样,解密过程可表示为:m≡c+k mod n (其中n为基本字符个数)
- 代码练习
- 实践结果:
Des算法
-
编程思路:
- 加密:
从文件中获取密钥->创建密码器(Cipher对象)->初始化密码器->获取等待加密的明文->执行加密->处理加密结果 - 解密:
获取密文->获取密钥->创建密码器(Cipher对象)->初始化密码器->执行解密
- 加密:
RSA算法
MD5
- 编程思路:
生成MessageDigest对象->传入需要计算的字符串->计算消息摘要->处理计算结果 - 代码练习
实验练习中问题和解决办法:
-
问题1:
创建Test测试文件时,误点了‘Disable “Create Test”’,导致黄色小灯泡下的Create Test不见了,无法创建Test测试文件。
-
解决办法:
办法有三种:
- 1.快捷键alt+instert,选择JUnit test,选择JUnit3。
注意:此方法创建出的Test测试文件中包含所有的可测试模板,非常好用。
- 2.在被测试类的类名上右击,点击“Go To”,然后“Test”。
- 3.快捷键Ctrl+Shift+t,效果和方法2是一样的。
-
问题2:传参数问题
- 例如,练习中的凯撒密码,运行代码出现如下错误:
- 例如,练习中的凯撒密码,运行代码出现如下错误:
-
解决方法:
- 这是传参数出现了问题,main函数中都包含有一个args参数,这个可以由命令行获取。但在IDEA中,要通过以下方法进行参数的输入:run->Edit Configurations,然后输入args要接收的参数。
- 这是传参数出现了问题,main函数中都包含有一个args参数,这个可以由命令行获取。但在IDEA中,要通过以下方法进行参数的输入:run->Edit Configurations,然后输入args要接收的参数。
课堂实践中的问题和解决方法
-
说明:本周课堂实践中,主要是练习了命令行参数的运用。有两个知识点:一是通过Integer将字符串转换为数字;二是递归函数的调用。代码已上传至码云,如下:
-
问题:递归实验中,出现以下问题:
-
解决方法:
将代码int sum=clSum(10)
改为int[] x=new int[10];int sum=clSum(x)
分析和感悟
通过课堂实践,我认识到自己对某些知识点的理解还不到位,在有限的时间内不能做到迅速调出实验结果,虽然大概知道什么原理,但总在一些小问题上出错,以至于会耗费很多时间。所以,以后一定要加深理解,争取不能在这种方面浪费过多的精力。