I want to transfer a big file between server and client, I know how to do this:
for the client side, the code is like :
OutputStream output = sk.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[1024*1024];
int bytesRead = 0;
while((bytesRead = fileInputStream.read(buffer))>0)
{
output.write(buffer,0,bytesRead);
}
fileInputStream.close();
for server side:
InputStream input = sk.getInputStream();
file = new File(filename);
FileOutputStream out = new FileOutputStream(file);
byte[] buffer = new byte[1024*1024];
int bytesReceived = 0;
while((bytesReceived = input.read(buffer))>0) {
out.write(buffer,0,bytesReceived);
System.out.println(bytesReceived);
break;
}
Now the problem is, the server and client agree on a 128-bit AES key, so I want to make fully use of the session key to make the file transfer process secure. My question is that, where can I insert the AES encryption process in my client and server? Thank you!
I think you could use javax.crypto.CipherInputStream / javax.crypto.CipherOutputStream. Usage example http://www.flexiprovider.de/examples/ExampleCrypt.html