我在通过套接字(客户端-服务器通信)发送加密文件时遇到了一些问题。我认为这是与流相关的问题(更具体地说,流的排列似乎相当复杂,因为我正在从对象输入/输出流中制作数据输入/输出流,然后从这些流中加密输入/输出流) ...
客户端:
private static void sendEncrypted(FileInputStream fis,DataOutputStream dos)throws Exception{
try {
byte[] data = new byte[1024];
CipherOutputStream cos = new CipherOutputStream(output, c);
makeFileHeader(dos, c, key, sig);
int i = fis.read(data);
while(i != -1){
cos.write(data, 0, i);
sig.update(data);
cos.flush();
i = fis.read(data);
}
cos.close();
fis.close();
byte[] signatureObj = sig.sign();
output.writeObject(signatureObj);
} catch (Exception e) {
System.out.println(e.toString());
}
}
dos - 从原始对象创建输出流(输出,从套接字创建) makefileheader - 创建对象并使用输出将其覆盖的方法
服务器端:
private static void receiveFiles(DataInputStream dis,FileOutputStream fos, int size) throws IOException{
byte [] b = new byte[1024];
int read = 0;
int offset;
while(read < size){
offset = input.read();
dis.read(b,0,offset);
fos.write(b,0,offset);
read +=offset;
}
}