Após compactar um arquivo para o formato .zip, preciso que o mesmo esteja protegido por senha.
Como inserir senha no arquivo???
public class CompactarZip{
public void compactador(String local,String nome ){
// nome do arquivo que será compactado
String arquivo = local+ "\\" +nome;
// Cria um buffer para ler os dados do arquivo
byte[] buf = new byte[1024];
try{
// Cria o arquivo zip
String compac = local+ "\\" +nome+".zip";
ZipOutputStream out = new ZipOutputStream(new
FileOutputStream(compac));
// Comprime o arquivo
FileInputStream in = new FileInputStream(arquivo);
// Adiciona o arquivo ao fluxo de saída
out.putNextEntry(new ZipEntry(arquivo));
// transfere dados do arquivo para o arquivo zip
int len;
while((len = in.read(buf)) > 0){
out.write(buf, 0, len);
}
// Finaliza a entrada
out.closeEntry();
in.close();
// Completa o arquivo zip
out.close();
System.out.println("Sucesso");
}
catch(IOException e){
// possíveis erros aqui
} finally{
}
}
}
Um arquivo ZIP com senha é um arquivo criptografado com um algoritmo especial (que é muito fraco e foi quebrado, por força bruta, faz muito tempo atrás) ou então AES. Não é só “botar uma senha no arquivo”. Portanto, você precisa procurar na Internet uma classe que faça isso.
Tem algum site conhecido para indicar como referência??
Obrigado.
Pesquisando encontrei sobre o bouncycastle.org
Alguem tem um exemplo de como criptografo um arquivo com ele??
Encontrei exemplo de como descriptografar apenas…
/** testcode + usage example */
public static void main( String[] args ) throws Exception {
//LogManager.getLogManager().readConfiguration( new FileInputStream("logging.properties") );
AesZipFileDecrypter zipFile = new AesZipFileDecrypter( new File("C:\\Users\\candidatos.xml.zip"), new AESDecrypterBC() );
ExtZipEntry entry = zipFile.getEntry( "C:\\Users\\candidatos.xml" );
zipFile.extractEntryWithTmpFile( entry, new File("C:\\Users\\candidatos.xml.zip"), "foo" );
}
Valeu…
Um arquivo criptografado com esse método que você mostrou não pode ser aberto (nem com senha) em nenhum programa que abra arquivos .zip, como o WinZip ou o BraZip ou o zip.exe. Isso é porque ele criptografa tudo, incluindo a estrutura do arquivo zip, que deve sempre ficar “aberta”. O formato ZIP criptografa apenas o conteúdo, não a estrutura (ou seja, a listagem de diretórios e arquivos).
Você precisa criar o arquivo criptografado exatamente como na especificação do formato ZIP. E isso não é trivial.