实验名称:网络编程与安全

实验日期:2017.6.8

实验人员:20162309邢天岳(结对编程同伴20162313苑洪铭)

指导老师:娄老师、王老师

实验步骤:1. 结对实现中缀表达式转后缀表达式的功能 MyBC.java,结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java。第一个实验可以结合上上个礼拜四则运算所编写的代码,使用MyBC和博客中的MyDC代码和测试代码,进行编译运行。由于MyBC代码是之前编写的,会与MyDC及测试类中的内容有所冲突,需要进行修改。第一个实验的主要部分是对后缀表达式进行编译,这里使用到了token.equals的调用。

网络安全eNSP综合实验 网络安全综合实验报告_客户端


在完成了主类的编写(这里主要是20162313苑洪铭同学进行编写,参考了网上关于栈使用的知识,

网络安全eNSP综合实验 网络安全综合实验报告_服务器_02


结合对知识的理解,完成了代码。)同时,实验1需要输入参数,在指定路径下建立txt文件,输入参数后运行。

2.基于Java Socket实现客户端/服务器功能,传输方式用TCP,客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器,服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端,客户端显示服务器发送过来的结果。第二个实验需要和结对伙伴共同完成,分别作为客户端和服务器。首先在命令行cmd下检查服务器的IP地址和端口,并在客户端的程序中输入,进行两者的连接,使得两者可以联动。这些只是实验的准备工作。

网络安全eNSP综合实验 网络安全综合实验报告_后缀表达式_03

完成连接后,客户端所发出的信息在服务器处于开启状态,接受信息后同步运行的(在这里我们尝试了关闭和开启服务器的防火墙,得出在开启服务器的防火墙后,会中断数据的传输。)实验2和实验3是一个递进的过程,补充了一个ASE加密过程,主要还是客户端和服务器之间的连接工作。

网络安全eNSP综合实验 网络安全综合实验报告_网络安全eNSP综合实验_04

这里所需要的也有四则运算实验时所用到的程序,但需要补充客户端和服务器的联动代码。包括连接端口,IP的提供,以及在出现异常时及时关闭流,使用e.printStackTrace打印异常信息。

网络安全eNSP综合实验 网络安全综合实验报告_客户端_05


实验三需要补充ASE加密,首先在百度上查找了关于ASE加密的相关资料:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

网络安全eNSP综合实验 网络安全综合实验报告_后缀表达式_06


关于ASE的编写,实验任务中也提到了3des加密方法,但des加密的安全系数并不高,3des相对较高,为提高安全强度,通常使用独立密钥的三级DES。但是DES迟早要被AES代替。流密码体制较之分组密码在理论上成熟且安全,但未被列入下一代加密标准。

3.实验4和实验5也是一个延续的过程,首先进行客户端和服务器的连接,这里使用了一个JAVA SOCKET方法,是一种网络编程的方法,称为套接字,用于描述IP地址和端口,而所编写的程序会通过这个方法向网络发出请求或接受请求。Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。客户端和服务器完成连接后,客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器,客户端和服务器用DH算法进行3DES或AES算法的密钥交换,服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端,客户端显示服务器发送过来的结果。

网络安全eNSP综合实验 网络安全综合实验报告_客户端_07

同时运行客户端和服务器的代码后,会显示数据连接成功,并输出加密后的信息。

网络安全eNSP综合实验 网络安全综合实验报告_后缀表达式_08


结对情况:本次实验我与结对伙伴20162313苑洪铭同学共同完成,我作为客户端,连接他的IP地址和端口,运行代码并完成实验。本次实验的中,实验4的过程中出现了问题,服务器始终无法连接到客户端的信息,显示系统找不到指定路径,我们同时在C盘里建立了相同的txt文件,并在程序中复制了相应的地址,再次运行时就没有问题了。

实验总结:本次实验是真正意义上的一次结对编程实验,需要结对的两个同学共同完成,实验的内容在两者间是联动的,需要共同运行,同样一方出现错误就会导致程序运行的失败。在java环境下我们已经进行了一个学期的学习,此次实验算是真正意义上的一次实现了信息的联动,同时体现了密钥的效果,加入了解密的过程,可以算是一次较为新颖的实验,也考验了结对同学之间的配合。本次实验更像是一次在互联网环境下的信息加工环节,可以更好地帮助我们理解程序的开发和信息流的传输环境。