标签:cal 读取 校验 练习 两台 ret 责任 policy 数字签名
课程:《程序设计与数据结构》
班级: 1723
姓名: 谭鑫
学号:20172305
实验教师:王志强
实验日期:2018年6月13日
必修/选修: 必修
(1)网络编程与安全-1:测试MyBC和MyDC的代码,但是老师说可以用之前各组编写的四则运算的代码,所以我用的是我们组的中缀转后缀和计算结果的两个方法进行测试的。
(2)网络编程与安全-2:在证明自己电脑与别的电脑连接不上的前提下,我使用虚拟机替代另一台电脑进行的传输,通过客户端输入的中缀表达式,转换成后缀表达式在传输到服务端进行计算。最最重要的一部分就是端口和IP一定要注意写对!!
(3)网络编程与安全-3:开始加密传输,在客户端将后缀表达式进行加密传输,到服务器端进行解密计算,然后在传回来。最困难的部分就是进行密钥的传输,在下面遇到的问题和解决办法中具体详述。
(4)网络编程与安全-4:运用DH算法进行加解密,先要理解双方的产生的两个密钥,再把公钥相互传输过去,通过两个密钥产生终极密钥进行加密和解密。
(5)网络编程与安全-5:客户端传输密文和MD5,然后在服务端产生MD5,将两个MD5进行对比,如果不对则说明传输过程中有缺失和篡改,对的话则说明传输过程中没问题。这样的话,再通过DH算法进行加密的话,增强了传输过程中的安全性。
问题1的解决方案:前两个实验没有加密,做起来还是比较顺手的。实验三感觉是一个分水岭。传输的过程需要带着密钥,但是将密钥通过QQ和微信传过去会有损失。想将密钥和密文以字符串的形式传输的话,在服务器上始终断不开,准备将密钥放到密文的字节数组里,再从服务端接收数组,从数组中扣除密钥的部分。
问题2的解决方案:这个MD5在实验三的练习过程中就每太懂,知识按照娄老师的博客中的要求进行练习,之前偷过的懒之后都得补回来...所以,找度娘查到MD5类似一种数字签名,利用传输信息形成MD5(一串消息摘要),通过网络传输过去,接收方通过解密接受过来的信息并生成对应的MD5,通过传过来的和接收方生成的进行对比,如果一直则没有被篡改,不一致就说明在传输过程中被修改了。
问题3的解决方案:密钥长度受限制,java运行时环境读到的是受限的policy文件。但是,我在按照网上的解决办法进行解决,在替换${jdk_home}/jre/lib/security目录下的 local_policy.jar 和 US_export_policy.jar 文件之后,却并无卵用...侯大哥给我加了一个一句话SecretKeySpec k =new SecretKeySpec(sb,"DESede");
就可以解决。
问题2的解决方案:这部分是在实验四遇到的问题。查到的代码可以实现实验四,但是不是很懂代码的含义。
- writeUTF(String str)以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。
- DataOutputStream,数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
- 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
实验五就是不断的在两台电脑之间传输信息,显示明文传输到后来的密文传输,一个密钥到两个密钥的加密,还有MD5的传输。在练习的过程中遇到了很多关于密码的问题,也学习很多关于IO流的问题。
20172305 2017-2018-2 《程序设计与数据结构》实验报告
标签:cal 读取 校验 练习 两台 ret 责任 policy 数字签名
原文地址:https://www.cnblogs.com/sanjinge/p/9199168.html