zoukankan      html  css  js  c++  java
  • 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)

    分析和感悟

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

  • 相关阅读:
    Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理
    mysql 索引
    C++ 后台进程 daemon
    Linux进程状态
    实现一个简单的shared_ptr
    [LeetCode] Factorial Trailing Zeroes
    完美转发
    排序
    每天五个java相关面试题(7)--线程篇
    程序员为什么会淡忘?
  • 原文地址:https://www.cnblogs.com/yaojingjing/p/6775246.html
Copyright © 2011-2022 走看看