20145230实验五 Java网络编程及安全
实验内容
- 掌握Socket程序的编写;
- 掌握密码技术的使用;
- 设计安全传输系统。
实验步骤
本次实验我负责编写客户端代码的编写,以下是我实验进行的步骤:
建立客户端网络连接,也就是创建Socket类型的对象,因此,我先创建一个socket对象,Socket socket = new Socket("192.168.43.246", 10001);这里socket实现的是连接到IP地址为192.168.43.246的10001号端口(端口号任意指定),需要特别说明的是,这里的IP地址指的是服务器电脑的IP地址,端口号也要与服务器上的端口号保持一致。这里提供一个查询IP地址的方法,打开命令提示符,输入指令ipconfig,找到你现在所使用的网络,显示的IPv4地址就是你的电脑现在使用的IP地址。由于我们需要进行安全传输,所以在传输过程中还要对数据进行加密,一般来说,采用对称性加密算法与非对称性加密算法结合的方式安全性要更高,因此这里我先用的是RSA算法,用服务器的公钥先对DES的密钥进行加密,然后将加密后的密钥传给服务器,接着让用户输入需要传输的明文,再使用DES算法对明文进行加密,将加密后的密文通过网络传到服务器,然后计算明文的Hash值,传送到服务器。服务器总共会收到来自客户端发送的DES的密钥、密文以及明文的Hash值,服务器会采用RSA公钥密码中服务器的私钥解密DES的密钥,接着用解密后的DES的密钥对密文进行解密,得到明文。服务器再将解得的明文计算Hash值,检查其是否与传过来的Hash值一致,如果一致说明匹配成功。
总结
这次实验从都不会做,到一点点探究,一点点学习,最终做出不甚完美,但结果正确的代码还是很有收获的。我从中学会了IO流传输以及文件的存储与读取。而且在这次试验中,我并不太了解老师打包发给我们的密码算法的每一条语句,但是把他们筛选整合,拼凑到一个代码中的技能却掌握了,学习java语言最重要的是掌握方法与架构,那些具体的函数与语句不是完全明白也可以应用它们。基本上会对网络编程有个大概的印象,当然其中的细节我们不一定能掌握的非常透彻,还需继续摸索。