RSA-Verschlüsselte Files per TCP übertragen.

gora

Mitglied
Hallo erstmal....
Ich bin gerade dabei ein Javaprogramm zu schreiben, dass eine Datei von einem Rechner via TCP an einen anderen Rechner überträgt.
Ja ich weiß dieses Thema hatten schon so viele Leute.
Ich möchte das ganze aber mit einer asynkronen 2048 Bit RSA-Verschlüsselung machen....
(Jaja so ist sie halt die Jugend. Immer nach höherem strebend ! ^^)

Naja auf jeden Fall habe ich es jetzt schon geschafft Schlüssel zu erzeugen die zu speicher und auch wieder einzulesen....
Auch habe ich mit meinem Code eine Übertragung hinbekommen.
Leider war der einzigste File, den ich übertragenbekommen habe nur eine 1kb große txt-Datei. Und dass kann ja nicht alles sein ...
Bei größeren Dateien bin ich der Meinung schreibt er den InpuStream nicht mehr auf den OutputStream ...

Ich hoffe ihr könnt mir helfen...
Vielen Dank schon einmal im vorraus für eure Mühe.

Gora

code:

public class FileRec {

private static final int port = 4711;

public static final int BUFFER_SIZE = 1024 * 50;
private byte[] buffer;

public FileRec(){
buffer = new byte[BUFFER_SIZE];
}

public void sendFile(File file) {
try {
ServerSocket socket = new ServerSocket(port);
Socket client = socket.accept();

keygen kg = new keygen("pub","priv","BC");

RSAPublicKey pub = (RSAPublicKey)kg.createPublicKeyFromFile();
RSAPrivateKey priv = (RSAPrivateKey) kg.createPrivateKeyFromFile();

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE,pub);

BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
CipherOutputStream cos = new CipherOutputStream(client.getOutputStream(),cipher);
BufferedOutputStream out = new BufferedOutputStream(cos);

//HIer in diese Whileschleife geht er nicht rein !
//int len = 0;
while (in.read(buffer)!=-1) {
System.out.println("sending .");
out.write(buffer);
}
in.close();
cos.flush();
out.flush();
cos.close();
out.close();

client.close();
socket.close();



} catch (Exception ex) {

ex.printStackTrace();

}
}

public void recieve(String host) {
try {
JFileChooser fc = new JFileChooser();
File file =null;



if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION)
{
file = fc.getSelectedFile();
}
keygen kg = new keygen("pub","priv","BC");

RSAPublicKey pub = (RSAPublicKey)kg.createPublicKeyFromFile();
RSAPrivateKey priv = (RSAPrivateKey) kg.createPrivateKeyFromFile();

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE,priv);

Socket socket = new Socket(host, port);
CipherInputStream cis = new CipherInputStream(socket.getInputStream(),cipher);
BufferedInputStream in =new BufferedInputStream(cis);

BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(new File (file.toString())));

//int len = 0;
while (in.read(buffer)!=-1) {
out.write(buffer);
System.out.print("#");
}
in.close();
out.flush();
out.close();
cis.close();
socket.close();
System.out.println("\nDone!");

}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
Komentar :
hm vielleicht haette mein Eintrag doch besser in das nur JAVA forum gepasst .... sorry hab ich irgendwie übersehen ...
 
Zuletzt bearbeitet:
Zurück