2 Star 0 Fork 0

CS-IMIS-23 / TeamWork

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
SocketClient.java 3.29 KB
一键复制 编辑 原始数据 按行查看 历史
package experiment4;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.net.Socket;
import java.security.*;
import java.util.Scanner;
/**
* Created by besti on 2018/6/9.
*/
public class SocketClient {
public static void main(String[] args) throws IOException, InvalidKeyException, ClassNotFoundException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException {
//1.建立客户端Socket连接,指定服务器位置和端口
// Socket socket = new Socket("localhost",8080);
Socket socket = new Socket("172.16.43.121",9901);
//2.得到socket读写流
OutputStream outputStream = socket.getOutputStream();
// PrintWriter printWriter = new PrintWriter(outputStream);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
//输入流
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
//3.利用流按照一定的操作,对socket进行读写操作
System.out.println("请输入一个问题:");
Scanner scan =new Scanner(System.in);
String info2 =scan.nextLine();
suffix suffix = new suffix();
String info1 = suffix.getAnswer(info2);
System.out.println(info1);
// 读取对方的DH公钥
FileInputStream f1=new FileInputStream("Bpub.dat");
ObjectInputStream b1=new ObjectInputStream(f1);
PublicKey pbk=(PublicKey)b1.readObject( );
//读取自己的DH私钥
FileInputStream f2=new FileInputStream("Apri.dat");
ObjectInputStream b2=new ObjectInputStream(f2);
PrivateKey prk=(PrivateKey)b2.readObject( );
// 执行密钥协定
KeyAgreement ka= KeyAgreement.getInstance("DH");
ka.init(prk);
ka.doPhase(pbk,true);
//生成共享信息
byte[ ] sb=ka.generateSecret();
for(int i=0;i<sb.length;i++){
System.out.print(sb[i]+",");
}
SecretKeySpec k=new SecretKeySpec(sb,0,24,"AES");
Cipher cp=Cipher.getInstance("AES");
cp.init(Cipher.ENCRYPT_MODE, k);
byte ptext[]=info1.getBytes("UTF8");
for(int i=0;i<ptext.length;i++){
System.out.print(ptext[i]+",");
}
System.out.println("");
byte ctext[]=cp.doFinal(ptext);
for(int i=0;i<ctext.length;i++){
System.out.print(ctext[i] +",");
}
System.out.println();
FileOutputStream f3=new FileOutputStream("SEnc.dat");
f3.write(ctext);
// String info = new String(ctext,"UTF8");
// printWriter.write(info);
// printWriter.flush();
outputStream.write(ctext);
outputStream.flush();
socket.shutdownOutput();
//接收服务器的响应
String reply = null;
reply = bufferedReader.readLine();
System.out.println(reply);
//4.关闭资源
bufferedReader.close();
inputStream.close();
outputStreamWriter.close();
//printWriter.close();
outputStream.close();
socket.close();
}
}
Java
1
https://gitee.com/CS-IMIS-23/TeamWork.git
git@gitee.com:CS-IMIS-23/TeamWork.git
CS-IMIS-23
TeamWork
TeamWork
d2d650b2a6fdc542e6c42e86c51bdd8ff0769e87

搜索帮助