实验内容

1.掌握Socket程序的编写;

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

3.设计安全传输系统。

我和20145306张文锦组队编程 http://www.cnblogs.com/besti145306/p/5471075.html 他负责客户端,我负责服务端

查看ip地址 和端口号占用情况

TCP内容:

服务器端代码如下:

package 实验5;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest
{
public static final int PORT = 8081;
public static void main(String[] args)
throws IOException
{
ServerSocket s = new ServerSocket(PORT);
System.out.println("Started:"+s);
try
{
Socket socket = s.accept();
try
{
System.out.println("Connection accepted:"+socket);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
while(true)
{
String str=in.readLine();
if(str.equals("END"))
break;
System.out.print("Echoing:"+str);
out.println(str);
}
}
finally
{
System.out.println("closing...");
socket.close();
}
}
finally
{
s.close();
}
}
}

•加密算法

package Server;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.math.BigInteger;
import java.security.interfaces.RSAPrivateKey;
public class Dec_RSA{
public String decodestring="";
public Dec_RSA(String ctext) throws Exception{
BigInteger c=new BigInteger(ctext);
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();
BigInteger m=c.modPow(d,n);
byte[] mt=m.toByteArray();
for(int i=0;i<mt.length;i++){
decodestring+=(char)(mt[i]);
} }
}

服务器端网络编程步骤

•服务器属于被动等待连接,所以首先要进行监听端口,等待客户端进行连接。

•在客户端连接之后,服务器就获得一个与客户端之间的连接,二者就可以通过这个连接进行数据交换了。

•服务器接收到客户端传来的数据之后要进行处理,针对本次实验来说,客户端传来的数据是加密过的,所以服务器需要进行解密的操作:

•首先要使用服务器端RSA的私钥对DES的密钥进行解密

•再将十六进制数据转换成十进制

•之后用解密得到的DES密钥对DES进行解密

•然后使用解密得到的DES对十进制进制密文数据进行解密

•最后将得到的十进制明文用“UTF-8”转码成明文字符

•解密之后得到明文之后还需要验证数据完整性,在这里使用Hash函数来检测。

•检测成功之后再向客户端返回数据表示匹配成功或者失败

•最后关闭连接。

双方匹配成功,并在客户端显示“匹配成功”的消息

20145334 第五次 java 实验报告的更多相关文章

  1. 第五次java实验报告

    Java实验报告 班级 计科二班 学号 20188437 姓名 何磊 完成时间2019/10/10 评分等级 实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实 ...

  2. Java实验报告五:Java网络编程及安全

    Java实验报告五:Java网络编程及安全                                                                               ...

  3. 20135231 JAVA实验报告三:敏捷开发与XP实践

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

  4. 第七次java实验报告

    Java实验报告 班级 计科二班 学号20188437 姓名 何磊 完成时间 2019/10/25 评分等级 实验四 类的继承 实验内容 )总票数1000张:(2)10个窗口同时开始卖票:(3)卖票过 ...

  5. 第五周总结&实验报告三

    第五周总结&实验报告三 实验报告 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s ...

  6. Java实验报告二:Java面向对象程序设计

    Java实验报告二:Java面向对象程序设计                                                                               ...

  7. 20145203盖泽双:Java实验报告二

    Java实验报告二:Java面向对象程序设计 实验要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 ...

  8. 20155310第一周JAVA实验报告

    20155310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...

  9. 20145310第一周JAVA实验报告

    20145310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...

随机推荐

  1. C语言连接SQLSERVER数据库

    第一步:配置ODBC.在配置ODBC时有用户DSN.系统DSN.和文件DSN三种方法,为了稳妥起见,采用系统DSN. DSN的名字叫LocalServer,帐号:sa,密码123456 第二步:打开V ...

  2. windows下自动关机

    定时:at 00:00 shutdown -s     //在00:00时关机 倒计时:shutdown -s -t 3600   //3600s后关机 取消:shutdown -a

  3. 7.Android常用第三方支付

    移动支付 用户使用移动的终端完成对所购买商品或者服务的支付功能;分为近场支付(蓝牙支付,刷卡,滴卡),和远程支付(网上支付,短信支付) app支付模块 常见的支付厂商-->常见的支付方式 支付宝 ...

  4. css的重置和原子类的使用

    @charset "utf-8";/* Reset Definitions*/body, div, p, a, ul, ol, li, dl, dt, dd, h1, h2, h3 ...

  5. 分享Kali Linux 2016.2第47周虚拟机

    分享Kali Linux 2016.2第47周虚拟机该虚拟机使用Kali Linux 2016.2第47周的64位镜像安装而成.基本设置如下:(1)该系统默认设置单CPU双核,内存为2GB,硬盘为50 ...

  6. zepto的bug1

    给页面<a>标签绑定了tap事件,在移动设备上点击按钮貌似一切正常,可以正常响应. 但是,把页面上下滑动几次之后,或者在滑动时手指滑动出移动屏幕之外,之后再点击按钮,就会发现第一次点击的时 ...

  7. poj1222 EXTENDED LIGHTS OUT 高斯消元||枚举

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8481   Accepted: 5479 Description In an ...

  8. Webstorm & PhpStorm

    WebStorm注册码 User Name: EMBRACE License Key: ===== LICENSE BEGIN ===== 24718-12042010 00001h6wzKLpfo3 ...

  9. Python小例子(判断质数)

    只能被自己或者1整除的数为质数 num = int(input('请输入一个数:')) if num > 1: # 查看因子 for i in range(2, num): if (num % ...

  10. 我的c++学习(1)hello world!

    // texthello.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using na ...