Java Verschlüsselte Texte über TCP

Tockra

Lt. Commander
Registriert
Dez. 2008
Beiträge
1.058
Hey Leute,

Ich wollte die Daten (Strings) meiner TCP Verbindung verschlüsseln und bin auf Cipher gestoßen.

Aktuell habe ich folgende Konstellation, aber die receive Methode scheint nicht wirklich zu funktionieren.
Mein Latein ist aktuell am Ende.

Server:
Code:
	public ConnectionListener(...) throws ... {
		loadKey();
		cipherout = Cipher.getInstance("RSA");
		cipherin = Cipher.getInstance("RSA");
		cipherout.init(Cipher.ENCRYPT_MODE, pk);
		cipherin.init(Cipher.DECRYPT_MODE, pk);
		
		
		this.cl = cl;
		
		try {
			socket = new ServerSocket(42234);
			
		}
...
        public void waitForConnection() {
		
		while(true) {
			Socket s =null;
			try {
				s = socket.accept();
				System.out.println("buh");

				in = new CipherInputStream( s.getInputStream(), cipherin );
				out = new CipherOutputStream( s.getOutputStream(), cipherout );

				if(!receive().equals("PW")) {
					s.close();
					continue;
				}
				System.out.println("Client connected.");
				while(true) {
					try {
						out.write(methodeMitStringRueckgabe.replaceAll("\\n", "-.trennzeichen.-").getBytes());
					}
					catch(IOException e) {
						System.out.println("Client disconnected.");
					}
				}
			} catch (IOException e) {
				System.out.println("Fehler beim Verbindungsaufbau.");
				continue;
			}
			finally {
				try {
					s.close();
				} catch (Exception e) {
				
				}
			}
			
		}
	}

	private String receive() throws IOException {
		System.out.println("Hey");
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		
		int i;
		byte[] block = new byte[2048];
		while ((i = in.read(block)) != -1) {
			bos.write(block, 0, i);
			System.out.println("1");
		}
		System.out.println("2");
		System.out.println(bos.toString());
		return bos.toString();
	}
	
	}

Client:

Code:
public ConsoleListener() throws IllegalArgumentException {
		try {
			loadKey();
			cipherout = Cipher.getInstance("RSA");
			cipherin = Cipher.getInstance("RSA");
			cipherout.init(Cipher.ENCRYPT_MODE, pk);
			cipherin.init(Cipher.DECRYPT_MODE, pk);
			
			s = new Socket("127.0.0.1",42234);
			in = new CipherInputStream( s.getInputStream(), cipherin );
			out = new CipherOutputStream( s.getOutputStream(), cipherout );
			out.write("PW".getBytes());
		} 
		catch (IOException e) {
			throw new IllegalArgumentException("Probleme beim Verbindungsaufbau mit dem Server.\nAbbruch.");
		}
		catch( InvalidKeyException e ) {
			throw new IllegalArgumentException("Probleme mit Client Key.");
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		consoleIn = new Scanner(System.in); // Erzeugt einen neuen Scanner, der die Eingaben scannt
		System.out.println("Welcome");
	}

Leider tut mein Server scheinbar nicht mal "PW" empfangen. Ich bekomme aus Receive die Ausgabe "hey", aber weder "1" noch "2" ...


ich hoffe mir kann jmd. weiter helfen..
Gruß
T
 
Zuletzt bearbeitet:
Zurück
Oben