Krypteret server/klient
Jeg har et problem med at overføre filer fra en server til en klient i krypteret form. Min kode er som følger:SERVER:
import java.io.*;
import java.net.*;
class ServerAES {
private ServerSocket server;
private Socket client;
private String key;
private int keySize;
private ObjectInputStream input;
private ObjectOutputStream output;
public ServerAES(int portNo, String key, int keySize) throws IOException {
this.key = key;
this.keySize = keySize;
server = new ServerSocket(portNo);
System.out.println("Server waiting for connection.");
client = server.accept();
System.out.println("Cliented connected.");
input = new ObjectInputStream(client.getInputStream());
output = new ObjectOutputStream(client.getOutputStream());
}
public void transferFile(String file) throws InvalidKeySizeException, IOException {
StreamAES stream = new StreamAES(new BufferedInputStream(new FileInputStream(file)),output,key,keySize);
stream.encrypt();
}
public static void main(String[] args) throws InvalidKeySizeException, InterruptedException, IOException {
String key128 = "000102030405060708090a0b0c0d0e0f", file = "file1000.txt";
ServerAES server = new ServerAES(47,key128,128);
server.transferFile(file);
Thread.sleep(5000);
}
}
CLIENT:
import java.io.*;
import java.net.*;
public class ClientAES {
private Socket server;
private String key;
private int keySize;
private ObjectOutputStream output;
private ObjectInputStream input;
public ClientAES(String host, int portNo, String key, int keySize) throws IOException {
this.key = key;
this. keySize = keySize;
try {
server = new Socket(host,portNo);
}
catch (UnknownHostException e) {
System.out.println("Server not found");
}
catch (ConnectException e) {
System.out.println("Could not connect to server");
}
System.out.println("Connected to server");
output = new ObjectOutputStream(server.getOutputStream());
input = new ObjectInputStream(server.getInputStream());
}
public void receiveFile(String file) throws InvalidKeySizeException, IOException {
StreamAES stream = new StreamAES(input,new BufferedOutputStream(new FileOutputStream(file)),key,keySize);
stream.decrypt();
}
public static void main(String[] args) throws InvalidKeySizeException, InterruptedException, IOException {
String key128 = "000102030405060708090a0b0c0d0e0f", host = InetAddress.getLocalHost().getHostAddress() , file = "dec_file1000.txt";
ClientAES client = new ClientAES(host,47,key128,128);
Thread.sleep(2000);
client.receiveFile(file);
}
}
encrypt/decrypt i StreamAES-klassen krypterer en InputStream og skriver det til en OutputStream. Den virker som den skal "lokalt" når jeg kun bruger filstrømme.
Mit problem er at der ikke bliver skrevet noget data til min output fil kaldet "enc_file1000.txt". Filen er helt tom når jeg har kørt serveren og klienten. Dette var naturligvis ikke hensigten.
Håber i kan hjælpe mig.
