那个网站ppt做的比较好,来宾建设工程造价网站,建程网官网最新信息,网站把域名解析到新ip后java的第五个实验——Java网络编程及安全 北京电子科技学院 实 验 报 告 课程#xff1a;Java程序设计 班级#xff1a;1352 姓名#xff1a;林涵锦 学号#xff1a;20135213 成绩#xff1a; 指导教师#xff1a;娄嘉鹏 实验日期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);//md (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、遇到问题与解决方法 1IP地址不会查找 解决打开运行输入cmd然后输入ipconfig 2一直显示连接超时 解决一人连接WiFi然后打开免费wifi开启网络连接成功。 3、感想总结 用程序解决实际问题时合作者可以发现自己发现不了的错误并提出不一样的解决办法拓展思路。最后一次实验的难度有点大虽然基本代码都给了但是电脑间的网络连接、代码组合等问题仍然十分棘手。十分考验能力。 转载于:https://www.cnblogs.com/20135213lhj/p/4570680.html