实验五 — — Java网络编程及安全

java的第五个实验——Java网络编程及安全

 

北京电子科技学院

实     验    报     告

                  课程:Java程序设计  班级:1352  姓名:林涵锦  学号:20135213

                      成绩:        指导教师:娄嘉鹏     实验日期:2015.6.11

                  实验密级:      预习程度:        实验时间:15:30~22:00

                  仪器组次:13     必修/选修:选修     实验序号:5

 

                          实验名称:Java网络编程及安全

 

                              实验目的与要求:        

目的:1.掌握Socket程序的编写;                        

2.掌握密码技术的使用;                     

3.设计安全                                      

要求:1.完成信息加密                                          

2. 信息加密后发送                               

                 

 

实验仪器:

名称

型号

数量

PC

 Acer

1

 

 

 

 

 

实验代码


package server;

 

import java.net.*;

import java.io.*;

import java.security.*;

import java.security.spec.*;

import javax.crypto.*;

import javax.crypto.spec.*;

import javax.crypto.interfaces.*;

import java.security.interfaces.*;

import java.math.*;

 

public class ServerT {

public static void main(String args[]) throws Exception {

ServerSocket link = null;

Socket socket = null;

try {

link = new ServerSocket(8080);// 创建服务器套接字

System.out.println("端口号:" + link.getLocalPort());

System.out.println("服务器已经启动...");

socket = link.accept(); // 等待客户端连接

System.out.println("已经建立连接");

//获得网络输入流对象的引用

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//获得网络输出流对象的引用

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

 

// 使用服务器端RSA的私钥对DES的密钥进行解密

String line = in.readLine();

BigInteger cipher = new BigInteger(line);

FileInputStream f = new FileInputStream("Skey_RSA_priv.dat");

ObjectInputStream b = new ObjectInputStream(f);

RSAPrivateKey prk = (RSAPrivateKey) b.readObject();

BigInteger d = prk.getPrivateExponent();

BigInteger n = prk.getModulus();//mod n

BigInteger m = cipher.modPow(d, n);//m=d (mod n)

byte[] keykb = m.toByteArray();

 

// 使用DES对密文进行解密

String readline = in.readLine();//读取客户端传送来的数据

FileInputStream f2 = new FileInputStream("keykb1.dat");

int num2 = f2.available();

byte[] ctext = parseHexStr2Byte(readline);

Key k = new SecretKeySpec(keykb,"DESede");

Cipher cp = Cipher.getInstance("DESede");

cp.init(Cipher.DECRYPT_MODE, k);

byte[] ptext = cp.doFinal(ctext);

String p = new String(ptext, "UTF8");//编码转换

System.out.println("从客户端接收到信息为:" + p); //打印解密结果

 

// 使用Hash函数检测明文完整性

String aline3 = in.readLine();

String x = p;

MessageDigest m2 = MessageDigest.getInstance("MD5");//使用MD5算法返回实现指定摘要算法的 MessageDigest对象

m2.update(x.getBytes());

byte a[] = m2.digest();

String result = "";

for (int i = 0; i < a.length; i++) {

result += Integer.toHexString((0x000000ff & a[i]) | 0xffffff00).substring(6);

}

System.out.println(result);

if (aline3.equals(result)) {

System.out.println("匹配成功");

}

out.println("匹配成功");

out.close();

in.close();

link.close();

} catch (Exception e) {

System.out.println(e);

}

}

//二进制转换成十六进制,防止byte[]数字转换成string类型时造成的数据损失

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();

}

//将十六进制转换为二进制

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;

}

}

实测运行图:

 

 

实验总结

1、结对编码的PSP时间

步骤

耗时min

百分比

需求分析

60

20%

设计

60

 20%

代码实现

120

40% 

测试

30

10%

分析总结

30

10%

 

 

2、遇到问题与解决方法:

(1)IP地址不会查找

    解决:打开运行,输入cmd,然后输入ipconfig

(2)一直显示连接超时

    解决:一人连接WiFi,然后打开免费wifi开启网络,连接成功。

 

3、感想总结

用程序解决实际问题时,合作者可以发现自己发现不了的错误,并提出不一样的解决办法,拓展思路。最后一次实验的难度有点大,虽然基本代码都给了,但是电脑间的网络连接、代码组合等问题仍然十分棘手。十分考验能力。

 

转载于:https://www.cnblogs.com/20135213lhj/p/4570680.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Viola-Jones人脸检测详解

在人脸检测中&#xff0c;Viola-Jones算法是一种非常经典的算法&#xff0c;该算法在2001年的CVPR上提出&#xff0c;因其高效快速的检测而被广泛使用。 这个算法用来检测正面的人脸图像&#xff0c;对于侧脸图像的检测不是很稳健。 算法可以被分为以下几个部分&#xff1a; …

中国的高铁世界第一,为何汽车却和德国、日本差距很大?

来源&#xff1a;中国经济大讲堂摘要&#xff1a;靠引进技术发展&#xff0c;可以换来制造技术&#xff0c;建成一定规模、一定水平的体系。但我们在抓住机遇、引进技术发展的同时&#xff0c;或者发展的后期&#xff0c;等我们有了市场&#xff0c;有了钱之后&#xff0c;应该…

硬核干货|揭示波士顿动力机器人背后的专利技术(上)

来源&#xff1a;超凡知识产权&#xff0c;机器人大讲堂整理发布摘要&#xff1a;如果说在腿足机器人领域里&#xff0c;有一个让人闻之色变的变态企业&#xff0c;那就非波士顿动力莫属了。深耕几十年的技术积累加上“不谙世事”的科研态度&#xff0c;使得BD一直保持在腿足机…

(Python+Tensorflow)编程踩坑集锦

(PythonTensorflow)编程踩坑集锦 1 开发环境安装 推荐视频&#xff1a;https://www.icourse163.org/learn/PKU-1002536002?tid1452937471#/learn/content?typedetail&id1229556595&cid1246770451&replaytrue 1.1 Tensorflow2安装过程&#xff08;Win10平台&am…

复盘亚马逊从优秀到卓越的24年

来源&#xff1a;方证证券4月18日&#xff0c;据报道&#xff0c;亚马逊公司计划在今年7月中旬关闭其在中国的本土电商业务&#xff0c;将业务重点转移至更有盈利空间的海外购和云服务上。对此&#xff0c;亚马逊方面4月18日回应澎湃新闻记者称&#xff0c;“明确的是&#xff…

深度!移动机器人(AGV)产业链全分析

来源&#xff1a;广证恒生、乐晴智库精选产业链&#xff1a;下游需要求旺盛带动下游产业链发展 移动机器人(AGV)是工业机器人的一种。它由计算机控制&#xff0c;具有移动、自动导航、多传感器控制、网络交互等功能&#xff0c;在实际生产中最主要的用途是搬运&#xff0c;可以…

英国前首相:为什么欧洲没有诞生互联网巨头?

David William Donald Cameron&#xff08;戴维威廉唐纳德卡梅伦&#xff09;见面会现场来源&#xff1a;世界科技创新论坛英国当地时间2019年4月12日&#xff0c;世界科技创新论坛伦敦峰会成功举行&#xff0c;本次峰会特别邀请了出身牛津大学、英国近两百年历史上最年轻的首相…

IIS解决 上传文件大小限制

目的&#xff1a;通过配置文件和IIS来解决服务器对上传文件大小的限制 1&#xff1a;修改配置文件&#xff08;默认为4M 值的大小根据自己情况进行修改&#xff09; <httpRuntime maxRequestLength"2048000" /> 2&#xff1a;修改IIS配置 打开C:\Windows\Syst…

脑内世界模型:脑科学基础上的意识问题哲学解说

来源&#xff1a;《华侨大学学报》哲学社会科学版2018年第5期作者&#xff1a;方圆&#xff08;中国科学院大学人文学院博士后研究人员&#xff09;本文旨在以当今时代脑科学研究结论为基础&#xff0c;在哲学层面回答“意识是什么”这一问题&#xff0c;并试图给出一种在科学与…

直击5G的机遇与挑战,全新商业模式、规模化经济效益、最新技术进展…全解读...

来源&#xff1a;TechRepublic、物联网智库编译摘要&#xff1a;报告指出&#xff0c;5G将改善用户体验&#xff0c;带来新的应用以及新的商业模式&#xff0c;产生显著的经济效益&#xff0c;但同时&#xff0c;5G的发展也面临着许多不可避免的挑战。毫无疑问&#xff0c;5G是…

simulink仿真学习(实现半波整流、方波输出) day1

** simulink仿真学习常用模块及具体案例实现&#xff08;第一天&#xff09; ** simulink简介 Simulink是美国Mathworks公司推出的MATLAB中的一种可视化仿真工具。Simulink是一个模块图环境&#xff0c;用于多域仿真以及基于模型的设计。它支持系统设计、仿真、自动代码生成…

深度报告解密华为汽车业务!布局三大领域,对标世界级Tier1

来源&#xff1a;智东西摘要&#xff1a;华为进军汽车电子领域&#xff0c;定位世界级Tier1供应商。汽车电子产业链 Tier1 系统集成厂商目前处于国际寡头垄断的市场格局&#xff0c;全球前十大汽车电子供应商拥有 70%市场占有率。即使国内市场也被博世、大陆、电装等国际 Tier1…

simulink仿真学习(关系运算及逻辑模块、离散时间积分模块)day2

1.关系运算模块&#xff08;应用实例&#xff09; 关系运算分为单目运算和双目运算&#xff0c;单目运算左侧输入为一个变量&#xff0c;双目运算左侧输入为两个变量。输出可能逻辑真或逻辑假。其中&#xff0c;逻辑真为1&#xff0c;逻辑假为0。 下图为双目关系运算的逻辑关…

保研之旅(中科院空天院、武汉大学、华南理工大学、 北京理工大学、中科院国家空间科学中心)

保研之旅&#xff08;总结过往&#xff0c;启程未来&#xff09;目录个人背景5月 中科院空天信息创新研究院信息方向7月 武汉大学测绘遥感信息工程国家重点实验室7月 北京理工大学雷抗所7月 华南理工大学电子信息学院7月中科院国家空间科学中心往年去向最后结语目录 个人背景 …

这5家纳米技术公司正在推动医疗检测的变革

来源&#xff1a;资本实验室纳米技术自发明已来&#xff0c;已经在多个领域得到应用。特别是在医疗领域&#xff0c;纳米医学已经成为现代医疗的一个重要发展方向。目前&#xff0c;纳米技术已经成功地用于各种疾病的检测与治疗&#xff0c;美国FDA也已经批准了超过60种含有纳米…

simulink学习仿真(微分模块、传递函数模块使用、波特图频率特性)day3

1. 微分模块使用及举例建模 大多数物理系统可以用微分方程来描述&#xff0c;因此可以用连续系统模拟。最简单的模型为“线性模型”和**“定常模型”**。 在Simulink中&#xff0c;用来模拟连续系统的模块有四种&#xff1a;增益模块、求和模块、微分模块、积分模块。另外&am…

斯坦福大学的产学研之路

来源&#xff1a;老钱文集摘要&#xff1a;新技术和新的商业模式随时都会产生&#xff0c;但是&#xff0c;只有当它们成为产品后&#xff0c;才能改变人们的生活并以此获利。一个新生产业需要有斯坦福这样的孵化器。发明创造遍布世界&#xff0c;但硅谷仅此一家。那是因为&…

2021年中国IT服务人才供给报告(需求与挑战并存)

过去五年&#xff0c;移动互联网蓬勃发展&#xff0c;但自从去年的疫情黑天鹅事件爆发之后&#xff0c;传统行业受到前所未有的冲击&#xff0c;而互联网行业依旧在迅猛发展&#xff0c;尤其在电子商务、游戏等远程服务&#xff0c;更是日进斗金。未来IT行业又会如何变化呢&…

经济学人: 低调应用, 高调回报, 亚马逊才是AI技术最大受益企业

来源&#xff1a;经济学人编译&#xff1a;机器之能 张玺亚马逊六页会议备忘录举世闻名。公司高管必须每年写一篇商业发展规划。鲜为人知的是&#xff0c;这些备忘录上有一道必答题──机器学习的应用路径&#xff1f;据亚马逊的经理们透露&#xff0c;像「应用不多」这样的反馈…

C++学习之路(一)

第一章&#xff1a;C语言概述 前言&#xff1a;这里学习C教材是选用的清华大学出版社的《C语言基础教程》第二版&#xff0c;该版本语言较为通俗易懂&#xff0c;概念清晰&#xff0c;便于理解。因为之前学习过C语言&#xff0c;因此在学习本书之际&#xff0c;也是抱着一遍复…