20155228 实验五 Android开发基础
2017-06-03 22:59
204 查看
20155228 实验五 Android开发基础
实验内容
1.掌握Socket程序的编写;
2.掌握密码技术的使用;
3.设计安全传输系统。
实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
实验步骤
结对编程:
参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
结对实现中缀表达式转后缀表达式的功能 MyBC.java
结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
上传测试代码运行结果截图和码云链接
结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
上传测试结果截图和码云链接
加密结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
上传测试结果截图和码云链接
密钥分发结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
客户端和服务器用DH算法进行3DES或AES算法的密钥交换
服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
上传测试结果截图和码云链接
完整性校验结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
客户端和服务器用DH算法进行3DES或AES算法的密钥交换
服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
上传测试结果截图和码云链接
遇到的问题和解决办法
1.编写客户端代码的时候发现如果要连接到服务器必须知道服务器的IP地址,但是在linux的命令行中查看PI的命令不是windows中的ipconfig
解决办法:通过百度得知linux的命令行中查看IP地址的命令是
ifconfig
2.在使用AES算法对数据进行加密的时候得到的结果是乱码
解决办法:通过百度知道加密得到的结果是二进制数据,需要增加一个转换为十六进制的代码
public class ParseSystemUtil { /**将二进制转换成16进制 * @param buf * @return */ public static String parseByte2HexStr(byte buf[]) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < buf.length; i++) { String hex = Integer.toHexString(buf[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } sb.append(hex.toUpperCase()); } return sb.toString(); } /**将16进制转换为二进制 * @param hexStr * @return */ public static byte[] parseHexStr2Byte(String hexStr) { if (hexStr.length() < 1) return null; byte[] result = new byte[hexStr.length()/2]; for (int i = 0;i< hexStr.length()/2; i++) { int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16); int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16); result[i] = (byte) (high * 16 + low); } return result; } }
PSP时间统计
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 20min | 8% |
设计 | 40min | 16% |
代码实现 | 120min | 50% |
测试 | 20min | 8% |
总结分析 | 40min | 16% |
相关文章推荐
- 20155228 实验四 Android开发基础
- 20145208 实验四 Android开发基础
- 20145337实验四Android开发基础
- 20155220 实验四 Android开发基础
- 20155235 《Java程序设计》 实验四 Android开发基础
- 20155308 实验四 Android开发基础
- 20145219 《Java程序设计》实验四 Android开发基础设计实验报告
- 2016-2017-2 20155302 实验四 Android 开发基础
- 20155233 《Java程序设计》实验四 Android开发基础
- 20155208 实验四 Android开发基础
- 20145221 《Java程序设计》实验报告四:Android开发基础
- 20145213 《Java程序设计》实验四 Android开发基础
- #实验四 Android开发基础
- 20155226 实验四 Android开发基础
- 20145214实验四 Android开发基础
- 20145211 《Java程序设计》实验报告四: Android开发基础
- 20145331实验四 "Android开发基础"
- 20145239 杜文超 实验四 Android开发基础
- 20155219实验四 Android开发基础设计实验报告
- 实验四android开发基础