· 5 years ago · Mar 30, 2020, 10:46 PM
1import java.net.*;
2import java.io.*;
3import java.security.InvalidAlgorithmParameterException;
4import java.security.InvalidKeyException;
5import java.security.NoSuchAlgorithmException;
6import javax.crypto.*;
7import javax.crypto.spec.IvParameterSpec;
8import javax.crypto.spec.SecretKeySpec;
9
10public class Server{
11 public static void main(String args[]){
12 int number=0;
13 try{
14 int serverPort = 4567;
15 ServerSocket listenSocket = new ServerSocket(serverPort);
16 while(true) {
17 Socket clientSocket = listenSocket.accept();
18 new Connection(clientSocket,number);
19 number++;
20 }
21 } catch(IOException e) {
22 System.out.println("Listen:" + e.getMessage());
23 }
24 }
25}
26
27class Connection extends Thread {
28 DataInputStream in;
29 DataOutputStream out;
30 Socket clientSocket;
31 int number;
32
33 public Connection (Socket aClientSocket,int clientNumber) {
34 try{
35 number=clientNumber;
36 clientSocket = aClientSocket;
37 in = new DataInputStream(clientSocket.getInputStream());
38 out = new DataOutputStream(clientSocket.getOutputStream());
39 this.start();
40 }catch(IOException e){System.out.println("Connection:" + e.getMessage());}
41 }
42
43 public void run(){
44 try{
45 while(true){
46
47 InputStream is = in;
48
49 //key
50 byte [] key = {1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4};
51 SecretKey secretKey = new SecretKeySpec(key, 0, key.length, "AES");
52
53 //nonce
54 //receives IV in plaintext
55 byte[] nonce=new byte[16];
56 is.read(nonce);
57 IvParameterSpec iv = new IvParameterSpec(nonce);
58
59
60 Cipher c = Cipher.getInstance("AES/CTR/PKCS5Padding");
61 c.init(Cipher.DECRYPT_MODE, secretKey, iv);
62
63
64 CipherInputStream cis = new CipherInputStream(is, c);
65 int text;
66 while((text=cis.read())!=-1) {
67 System.out.print((char)text);
68
69 }
70 }
71 }
72 catch (NoSuchPaddingException e) {
73 e.printStackTrace();
74 }
75 catch (NoSuchAlgorithmException e) {
76 e.printStackTrace();
77 }
78 catch (InvalidKeyException e) {
79 e.printStackTrace();
80 }
81 catch (InvalidAlgorithmParameterException e) {
82 e.printStackTrace();
83 }
84 catch (IOException e) {
85 e.printStackTrace();
86 }
87 }
88}