团队冲刺DAY6

今天的内容是无图形界面的客户端和服务器的加密解密系统。

通信时用的socket方法,内置的密钥,端口,ip地址.

客户端:

import java.io.*;
import java.net.*;
import java.nio.charset.Charset;
import java.util.*;
public class Client {
private static final String SKEY = "abcdefgh";
private static final Charset CHARSET = Charset.forName("gb2312");
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
Socket mysocket=null;
DataInputStream in=null;
DataOutputStream out=null;
Thread readData ;
Read read=null;
try{ mysocket=new Socket();
read = new Read();
readData = new Thread(read);
String IP = "127.0.0.1";
int port = 2010;
if(mysocket.isConnected()){}
else{
InetAddress address=InetAddress.getByName(IP);
InetSocketAddress socketAddress=new InetSocketAddress(address,port);
mysocket.connect(socketAddress);
in =new DataInputStream(mysocket.getInputStream());
out = new DataOutputStream(mysocket.getOutputStream());
read.setDataInputStream(in);
readData.start();
}
}
catch(Exception e) {
System.out.println("服务器已断开"+e);
}
System.out.println("已经成功连接服务器,开始通讯!");
System.out.print("输入:");
while(scanner.hasNext()) {
Macq S = new Macq();
String s = "";
String st = "";
try {
s = scanner.nextLine();
}
catch(InputMismatchException exp){
System.exit(0);
}
if(s.equals("end!")){
System.exit(0);
}
s = DesUtil.encrypt(s, CHARSET, SKEY);
st = S.mac(s);
try {
out.writeUTF(s);
out.writeUTF(st);
}
catch(Exception e) {}
}
}
}

服务器:

import java.io.*;
import java.nio.charset.Charset; public class Read implements Runnable {
private static final String SKEY = "abcdefgh";
private static final Charset CHARSET = Charset.forName("gb2312");
DataInputStream in;
public void setDataInputStream(DataInputStream in) {
this.in = in;
}
@Override
public void run() {
Macq S = new Macq();
String s = "";
String mactext = "";
String mactest = "";
while(true) {
try{
s = in.readUTF();
mactext = in.readUTF();
System.out.println("服务器回复:"+s);
System.out.println("接收到的mac:"+mactext);
try{
mactest =S.mac(s);
System.out.println("本地检验的mac:"+mactext);
if(mactest.equals(mactext)==true){
throw new java.io.IOException("没有通过mac检验");
}
}catch (Exception e2){
e2.printStackTrace();
}
try {
s = DesUtil.decrypt(s, CHARSET, SKEY);
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println("解密为:"+s);
System.out.print("输入:");
}
catch(IOException e) {
System.out.println("与服务器已断开!"+e);
break;
}
}
}
}

因为不是最终稿,所以并没有用更难组合的用两个线程的客户端和服务器的DAY1代码,而是用的书上的例子,来增加部分代码的方法先练练手。

团队冲刺DAY6的更多相关文章

  1. Alpha冲刺Day6

    Alpha冲刺Day6 一:站立式会议 今日安排: 由张梨贤继续完成前一天委托第三方剩余的内容,并完成委托情况查看这一子模块 由黄腾飞继续完成前一天企业自查风险管理剩余的内容,并完成风险上报这一子模块 ...

  2. Alpha冲刺——day6

    Alpha冲刺--day6 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...

  3. Beta冲刺——day6

    Beta冲刺--day6 作业链接 Beta冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602134 王龙 ...

  4. 团队冲刺DAY1

    团队冲刺DAY1 今天的内容是对未来6天的突击有一个大致的规划. 我们小组的选题是客户端-服务器安全信息传递系统,通过讨论,我们认为大概有四个难题. 第一个是服务器和客户端,我们打算用第二天来完成. ...

  5. 【团队冲刺总结】一个编码人员的反(tu)思(cao)

    消失了半个多月了啊,算算时间,好像确实有近个把月没有好好的写博客来了.我一直很想写博客的,之前有老师问过写博客的动力是什么.我想了想,我觉得可能是我比较喜欢看书吧,不管是专业书还是小说(好吧,我承认, ...

  6. 团队冲刺the second day

    今天是我们的团队冲刺的第二天,由于我的电脑出现了一点问题,系统还原了,我有重新配置了一下环境变量和一些eclipse的问题,导致时间浪费了很多,但是我还是做了一些简单的任务,例如编写节日的页面的布局, ...

  7. 团队作业八——第二次团队冲刺(Beta版本)第7天&项目汇总

    项目汇总 第一天:http://www.cnblogs.com/newteam6/p/6879383.html 第二天:http://www.cnblogs.com/newteam6/p/688078 ...

  8. 团队作业八——第二次团队冲刺(Beta版本)第6天

    团队作业八--第二次团队冲刺(Beta版本)第6天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题 ...

  9. 团队作业八——第二次团队冲刺(Beta版本)第5天

    团队作业八--第二次团队冲刺(Beta版本)第5天 一.每个人的工作 (1) 昨天已完成的工作 完成界面跳转界面. (2) 今天计划完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (3) 工作中 ...

随机推荐

  1. Linux测试端口的连通性的四种方法

    目录 1.telnet 2.ssh 3.crul 4.wget 方法一.telnet telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法 ...

  2. SyntaxError: missing ] after element list

    在前端页面js报错,找了很久没找到原因. 后来发现是后台向前端输出json字符串,而前端接收是html格式,需要将后台json字符串改成正常字符串就可以输出,或者通过ajax的方式接收json字符串.

  3. soj#547 bzoj5046 分糖果游戏

    分析 代码 #include<bits/stdc++.h> using namespace std; #define int long long ; ][],s[],p[],v[]; si ...

  4. jmeter 自动生成测试报告命令

    环境要求 1:jmeter3.0版本之后开始支持动态生成测试报表 2:jdk版本1.7以上 3:需要jmx脚本文件 基本操作 1:在你的脚本文件路径下,执行cmd命令:jmeter -n -t tes ...

  5. 测开之路四十:jQuery基本用法

    从cdn引入jQuery库:https://www.bootcdn.cn/,搜索jQuery 在html里面(使用之前计算器的脚本),把复制的标签粘贴到引入js标签的前面:<script src ...

  6. delphi vlc 安装bug 处理编译错误"0" is an invalid value for the "DebugInformation" parameter of the "DCC"

    处理编译错误"0" is an invalid value for the "DebugInformation" parameter of the "DCC" [摘要:http://blog.csdn ...

  7. xstart使用方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/YABIGNSHI/article/det ...

  8. Codeforces 1132D(二分答案+堆)

    题面 传送门 分析 二分答案,考虑如何判定 可以用贪心的方法,每次找最快没电的电脑,在没电前1单位时间给它充电 正确性显然 实现上可以维护一个堆,存储每个电脑电用完的时刻,每次从堆顶取出最小的一个给它 ...

  9. Springboot系列1_什么是Springboot

    Springboot系列1_什么是Springboot */--> code {color: #FF0000} pre.src {background-color: #002b36; color ...

  10. make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误

    解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误 在CentOS 7中,使用static方法编译,需要安装static vers ...