Java отправляет зашифрованный файл через сокет

Я пытался написать небольшой файловый сервер. Я дошел до того, что с передачей файлов все в порядке, но теперь, когда я Я пытался добавить шифрование, происходят странные вещи. Я пытаюсь использовать потоки ввода / вывода шифра для отправки файла с использованием шифрования DES. Кажется, что файл полностью передан сервером, но я не могу заставить клиента получить его должным образом.

Независимо от того, какой тип файла я передаю, клиент никогда не выходит из цикла, который я использую для получения файла. . Несмотря на это, мне удалось получить файлы .pdf и .doc, ни один из которых, похоже, не содержит ошибок и отлично открывается. Когда я отправляю изображение, кажется, что конец не проходит должным образом. Изображение открывается, но конец никогда не отображается, вместо этого отображается только затененная область.

Я полагаю, что эти проблемы связаны, но я не понимаю, как их исправить.

Вот код, который я использую для отправки файла на стороне сервера:

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
CipherOutputStream cipherOut = new CipherOutputStream(outToClient, cipher);
byte[] fileBuffer = new byte[BUFFER_SIZE];
InputStream fileReader = new BufferedInputStream(new FileInputStream(aFile));
int bytesRead;
while((bytesRead = fileReader.read(fileBuffer)) != EOF){
    cipherOut.write(fileBuffer, 0, bytesRead);
}
cipherOut.flush();

И код для его получения на стороне клиента:

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, serverPublicKey);
CipherInputStream cipherIn = new CipherInputStream(inFromServer, cipher);

byte[] fileBuffer = new byte[BUFFER_SIZE];
FileOutputStream fileWriter = new FileOutputStream(newFileName);
int bytesRead;
while((bytesRead = cipherIn.read(fileBuffer)) != EOF){
    fileWriter.write(fileBuffer, 0, bytesRead);
}
fileWriter.flush();
fileWriter.close();

Любые указатели в правильном направлении были бы превосходными.

5
задан charlemagne 19 May 2011 в 00:08
поделиться