Frage zur Verschlüsselung mit CipherInputStream

Status
Nicht offen für weitere Antworten.

anfänger15

Bekanntes Mitglied
hallo,

ich arbeite zur Zeit an einem kleinen Prog, dass Strings durchs Netzt schickt. Es funktioniert nun alles, jedoch wollte ich nun das ganze verschlüsseln und dachte ich kann einfach den InputStream mit einem CipherInputStream ersetzten und der Datenaustausch läuft nun verschlüsselt ab. Seit dem ich dies versucht habe sendet der Client aber nichts mehr.

An was kann das liegen?

Code:
Cipher c = Cipher.getInstance( "DES" ); 
    Key k = new SecretKeySpec( pass.getBytes(), "DES" ); 
    c.init( Cipher.DECRYPT_MODE, k ); 
 
    
    CipherInputStream cis = new CipherInputStream(socket.getInputStream(), c );


danke
 
Dies sollte auch nur ein Beispiel sein.
Ich hab lediglich jedesmal den InputStream bzw. den OutputStream mit einem CipherOutputStream ersetzt jedoch funktioniert es nicht. Verwende ich aber nur einen OutputStream ohne den Umweg über CipherOutputStream funktioniert es.


Code:
Cipher c = Cipher.getInstance( "DES" );
    Key k = new SecretKeySpec( pass.getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );

   
    CipherOutputStream cis = new CipherOutputStream(socket.getOutputStream(), c );
 
Ich empfange erst daten nachdem ich den OutputStream schließe. Ich habe es auch so versucht wie in dem Link den cburghardt gepostet hat, jedoch ändert dies auch nichts daran.
 
Hast du auch die Cipher geändert? Wenn du kein Padding angibst, wird eine Provider-spezifische Implementierung verwendet, dass ist ein wenig tricky. Ich würde das in dem Beispiel verwendete CFB8 für Byte-Streaming verwenden.
Nachdem du den Rest nicht gepostet hast weiß ich nicht wie du die Daten verarbeitest und wie viele Daten du sendest. Verwendest du einen flush? Die Cipher selber puffert auch noch mal, denk dran.
 
ok nun funktioniert es so einigermaßen, jedoch hab ich jetzt das Problem, dass ich bisher immer flush aufgerufen habe, um z.B. das eingegebene Passwort sofort zu senden, jedoch soll man dies aber so weit ich das gelesen habe nicht tun.

Was nun? Ich kann nicht warten bis der User genügend Zeichen eingegeben hat, damit der Client etwas sendet.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben