20169214 2016-2017-2 移动平台实验三

实验三 敏捷开发与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要接收的参数。

课堂实践中的问题和解决方法

  • 说明:本周课堂实践中,主要是练习了命令行参数的运用。有两个知识点:一是通过Integer将字符串转换为数字;二是递归函数的调用。代码已上传至码云,如下:

  • 问题:递归实验中,出现以下问题:

  • 解决方法:

将代码int sum=clSum(10)改为int[] x=new int[10];int sum=clSum(x)

分析和感悟

通过课堂实践,我认识到自己对某些知识点的理解还不到位,在有限的时间内不能做到迅速调出实验结果,虽然大概知道什么原理,但总在一些小问题上出错,以至于会耗费很多时间。所以,以后一定要加深理解,争取不能在这种方面浪费过多的精力。

posted on 2017-04-27 18:35  20169214姚静  阅读(250)  评论(0编辑  收藏  举报