实验五 网络编程与安全
实验五 网络编程与安全-1
试验内容
- 结对实现中缀表达式转后缀表达式的功能 MyBC.java
- 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
- 上传测试代码运行结果截图和码云链接
实验结果
只需要调用前面四则运算的类类就可以实现了。
实验五 网络编程与安全-2
实验内容
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
- 服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 上传测试结果截图和码云链接
实验结果
实验五 网络编程与安全-3
实验内容
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
- 服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 上传测试结果截图和码云链接
实验结果
实验五 网络编程与安全-4
实验内容
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
- 上传测试结果截图和码云链接
实验结果
实验五 网络编程与安全-5
实验内容
- 基于Java Socket实现客户端/服务器功能,传输方式用TCP
- 客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
- 客户端和服务器用DH算法进行3DES或AES算法的密钥交换
- 服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
- 客户端显示服务器发送过来的结果
实验结果
实验中遇到的问题
- 对于DH算法的理解
我的对于DH算法的理解是基于娄老师的博客,即DH算法是建立在DH公钥和私钥的基础上的,A需要和B共享密钥时,A和B各自生成DH公钥和私钥,公钥对外公布而私钥各自秘密保存。而我的结对伙伴是基于网上的一种DH算法,两者的不同是B的公钥和私钥是基于A的公钥生成的。于是在编写代码的过程中出现了一些问题。不过最后我们还是统一采用后者。
2. 实验4中遇到的问题
因为B的公钥和私钥需要A的公钥来生成,因此,生成B公钥和私钥就一定要在A发送公钥给B之后,这就遇到一个程序的运行先后顺序,如果直接点运行的话,程序就会直接跑完,不能实现顺序。
我在之前学长的代码中受到启发,运用程序睡眠这一方法
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
但是这个太过繁琐,思路有时会很乱,导致我们无法实现预期的效果,因此后来我们在请教过王志强老师后,采用人为控制的方法,及使用if
语句,客户端和服务器在两个人商量好的情况下使程序按照我们的想法运行。
实验感悟
我和泰毓同学结对也快一个学期了,这周的实验我们俩在实验室坐了一天,好不容易才弄完,真的是感受到两个人一起完成一项任务的那种快乐与喜悦,两个人之间的那种配合,互相学习,特别好。