· 5 years ago · Mar 15, 2020, 06:54 PM
1import java.net.*;
2 import java.io.*;
3 import java.security.InvalidAlgorithmParameterException;
4 import java.security.InvalidKeyException;
5 import java.security.NoSuchAlgorithmException;
6 import javax.crypto.*;
7 import javax.crypto.spec.IvParameterSpec;
8 import 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 //key
47 /*KeyGenerator keyGen = KeyGenerator.getInstance("AES");
48 keyGen.init(128);
49 SecretKey secretKey = keyGen.generateKey();*/
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 byte[] nonce={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
55 IvParameterSpec iv = new IvParameterSpec(nonce);
56
57 Cipher c = Cipher.getInstance("AES/CTR/NoPadding");
58 c.init(Cipher.DECRYPT_MODE, secretKey, iv);
59
60 InputStream is = in;
61 CipherInputStream cis = new CipherInputStream(is, c);
62 int text;
63 while((text=cis.read())!=-1) {
64 System.out.print((char)text);
65 }
66 }
67 }
68 catch (NoSuchPaddingException e) {
69 e.printStackTrace();
70 }
71 catch (NoSuchAlgorithmException e) {
72 e.printStackTrace();
73 }
74 catch (InvalidKeyException e) {
75 e.printStackTrace();
76 }
77 catch (InvalidAlgorithmParameterException e) {
78 e.printStackTrace();
79 }
80 catch (IOException e) {
81 e.printStackTrace();
82 }
83 }
84
85 private void processFile(Cipher c) throws IOException {
86 InputStream is = in;
87 CipherInputStream cis = new CipherInputStream(is, c);
88 int text;
89 while((text=cis.read())!=-1) {
90 System.out.print((char)text);
91 }
92 }
93}