защищенный паролем выпуск файла zip - PullRequest
0 голосов
/ 27 декабря 2018

Пользователь загружает файл, мне нужно защитить его паролем, а затем заархивировать его на сервер хранения, который отличается от сервера, на котором выполняется мой код.Поэтому я использую AESEncrypter для шифрования файла и jcraft.jsch.ChannelSftp для передачи файла на сервер.

public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
    FileOutputStream fos = new FileOutputStream("outputfile.zip");
    AESEncrypter aesEncrypter = new AESEncrypterBC();
    aze=new AesZipFileEncrypter(fos, aesEncrypter);
    aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");

    JSch ssh = new JSch();
    Session session = ssh.getSession("username", "Servername", 22);

    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.setPassword("*****");
    session.connect();
    Channel channel = session.openChannel("sftp");
    channel.connect();

    sftp = (ChannelSftp) channel;
    sftpChannel.put(file.getInputStream(), "/storedfiles/outputfile.zip");
}

Файл передается на сервер, но когда я загружаю этот переданный файл и пытаюсь открытьон говорит: «Обнаружены ошибки при открытии» .. «Вы не можете извлечь файл .. Вы хотите исправить проблемы».Не уверен, почему я получаю эту проблему, также он создает файл на локальном сервере, какая строка вызывает это?

Я пытался заменить эту строку

aze=new AesZipFileEncrypter(fos, aesEncrypter);

на

aze=new AesZipFileEncrypter("outputfile.zip", aesEncrypter); 

но не работает.

1 Ответ

0 голосов
/ 27 декабря 2018

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

public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
JSch ssh = new JSch();
Session session = ssh.getSession("username", "Servername", 22);

config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("*****");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();

sftp = (ChannelSftp) channel;
OutputStream os = sftp.put("/storedfiles/outputfile.zip");

AESEncrypter aesEncrypter = new AESEncrypterBC();
aze=new AesZipFileEncrypter(os, aesEncrypter);
aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");
if(aze != null) {
 aze.close();
}    
}
...