20145308刘昊阳 《Java程序设计》实验五 Java网络编程及安全 实验报告

实验名称

Java网络编程及安全

实验内容

1.掌握Socket程序的编写;

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

3.设计安全传输系统。

统计的PSP(Personal Software Process)时间

步骤 耗时(min) 百分比
需求分析 20~30 17%
设计 20~30 17%
代码实现 10~20 11%
测试 50~60 33%
分析总结 30~40 22%

实验步骤


  1. import java.io.*;
  2. import java.net.*;
  3. /**
  4. * 复用连接的echo服务器
  5. * 功能:将客户端发送的内容反馈给客户端
  6. */
  7. public class MulSocketServer {
  8. public static void main(String[] args) {
  9. ServerSocket serverSocket = null;
  10. Socket socket = null;
  11. OutputStream os = null;
  12. InputStream is = null;
  13. //监听端口号
  14. int port = 10000;
  15. try {
  16. //建立连接
  17. serverSocket = new ServerSocket(port);
  18. System.out.println("服务器已启动:");
  19. //获得连接
  20. socket = serverSocket.accept();
  21. //初始化流
  22. is = socket.getInputStream();
  23. os = socket.getOutputStream();
  24. byte[] b = new byte[1024];
  25. for(int i = 0;i < 2;i++){
  26. int n = is.read(b);
  27. //输出
  28. System.out.println("客户端发送内容为:" + new String(b,0,n));
  29. //向客户端发送反馈内容
  30. os.write(b, 0, n);
  31. }
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. }finally{
  35. try{
  36. //关闭流和连接
  37. os.close();
  38. is.close();
  39. socket.close();
  40. serverSocket.close();
  41. }catch(Exception e){}
  42. }
  43. }
  44. }
  • 接收到对方传送的字符串

  • 2.生成公钥、私钥

  1. KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
  2. kpg.initialize(1024);
  3. KeyPair kp=kpg.genKeyPair();
  4. PublicKey pbkey=kp.getPublic();
  5. PrivateKey prkey=kp.getPrivate();
  6. FileOutputStream f1=new FileOutputStream("Skey_RSA_pub.dat");
  7. ObjectOutputStream b1=new ObjectOutputStream(f1);
  8. b1.writeObject(pbkey);
  9. FileOutputStream f2=new FileOutputStream("Skey_RSA_priv.dat");
  10. ObjectOutputStream b2=new ObjectOutputStream(f2);
  11. b2.writeObject(prkey);

  • 3.利用解密算法对收到的密文进行解密
  1. BufferedReader in=
  2. new BufferedReader(new InputStreamReader(new FileInputStream("Enc_RSA.dat")));
  3. String ctext=in.readLine();
  4. BigInteger c=new BigInteger(ctext);
  5. FileInputStream f=new FileInputStream("Skey_RSA_priv.dat");
  6. ObjectInputStream b=new ObjectInputStream(f);
  7. RSAPrivateKey prk=(RSAPrivateKey)b.readObject( );
  8. BigInteger d=prk.getPrivateExponent();
  9. BigInteger n=prk.getModulus();
  10. System.out.println("d= "+d);
  11. System.out.println("n= "+n);
  12. BigInteger m=c.modPow(d,n);
  13. System.out.println("m= "+m);
  14. byte[] mt=m.toByteArray();
  15. System.out.println("PlainText is ");
  16. for(int i=0;i<mt.length;i++){
  17. System.out.print((char) mt[i]);

  1. FileInputStream f=new FileInputStream("SEnc.dat");
  2. int num=f.available();
  3. byte[ ] ctext=new byte[num];
  4. f.read(ctext);
  5. FileInputStream f2=new FileInputStream("keykb1.dat");
  6. int num2=f2.available();
  7. byte[ ] keykb=new byte[num2];
  8. f2.read(keykb);
  9. SecretKeySpec k=new SecretKeySpec(keykb,"DESede");
  10. Cipher cp=Cipher.getInstance("DESede");
  11. cp.init(Cipher.DECRYPT_MODE, k);
  12. byte []ptext=cp.doFinal(ctext);
  13. String p=new String(ptext,"UTF8");
  14. System.out.println(p);

20145308刘昊阳 《Java程序设计》实验五报告的更多相关文章

  1. JAVA程序设计 实验一报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1351  姓名:李畅宇  学号:20135129 成绩:             指导教师:娄嘉鹏 ...

  2. Java程序设计 实验五

    实     验    报     告 课程:Java 班级: 1353    姓名:李海空   学号:20135329 成绩:              指导教师:娄嘉鹏   实验日期:2015.6. ...

  3. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  4. 20145308刘昊阳 《Java程序设计》实验四 Android环境搭建 实验报告

    20145308刘昊阳 <Java程序设计>实验四 Android环境搭建 实验报告 实验名称 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输 ...

  5. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

  6. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  7. 20145308刘昊阳 《Java程序设计》第8周学习总结

    20145308刘昊阳 <Java程序设计>第8周学习总结 教材学习内容总结 第15章 通用API 15.1 日志 15.1.1 日志API简介 java.util.loggging包提供 ...

  8. 20145308刘昊阳 《Java程序设计》第7周学习总结

    20145308刘昊阳 <Java程序设计>第7周学习总结 教材学习内容总结 第13章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 格林威治时间(GMT) 世界时(UT ...

  9. 20145308刘昊阳 《Java程序设计》第6周学习总结

    20145308刘昊阳 <Java程序设计>第6周学习总结 教材学习内容总结 第10章 输入/输出 10.1 InputStream与OutputStream 10.1.1 串流设计概念 ...

随机推荐

  1. AIX 配置网卡

    ifconfig en0 10.1.1.100 netmask 255.255.255.0 alias

  2. 与你相遇好幸运,Linux常用命令

    开机挂载硬盘 cat  /etc/fstab /dev/sda1  /mnt/sda1 ext3    defaults    0  0 挂载硬盘 mount  /dev/sdb5 /home/dis ...

  3. Delphi 的知识体系

    第一部分   快速开发的基础 第1章   Delphi 5下的Windows编程    1 1.1   Delphi产品家族    1 1.2  Delphi是什么    3 1.2.1   可视化开 ...

  4. 【mysql启动Innodb的方法】

    点击此处进入原网页 1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...

  5. 算法系列:geometry

    1.基本几何变换及变换矩阵 基本几何变换都是相对于坐标原点和坐标轴进行的几何变换,有平移.比例.旋转.反射和错切等. 1.1 平移变换 是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程 ...

  6. Golang gopath

    golang 的gopath 至关重要,会影响到我们import package. golang 支持以相对路径的方式import,但是这种方式是不推荐的. 推荐的做法是在gopath中添加我们的项目 ...

  7. JavaScript - 事件流

    事件流 事件冒泡就是事件沿DOM树向上传播,在没一级节点上都会发生,直至传播到document对象. 事件捕获正好相反,但是老版本的浏览器不支持,因此很少有人使用事件捕获. 事件处理程序 HTMl 事 ...

  8. [Eclipse] Eclipse配置Tomcat插件

    1 . Eclipse IDE 3.6 for Java EE Developersat- 5.5.28 或者以上版本 : 2 . 安装 Tomcat 插件 , 文件名: tomcatPluginV3 ...

  9. Spring容器初始化过程

    一.Spring 容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依 ...

  10. hdu 1063(java写高精度)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1063 思路:最近刚学了java,然后就迫不及待想试试java写大数的好处了,呵呵,果然是很方便啊! i ...