Salve pessoal! Hoje vou falar sobre como compactar um arquivo com senha usando Java. Embora isso pareça trivial, é menos comum do que se pensa, pois isso depende da implementação de um algoritmo de criptografia, que no nosso caso, foi usado o algoritmo AES. É importante citar também que as rotinas de criptografia são disponibilizadas por http://www.bouncycastle.org/.
So, Let's Go Kids!
Abra o Eclipse, eu estou usando o Galileo, mas fiquem a vontade para usar versões anteriores, ou se preferirem podem usar ainda o Netbeans, daí basta instalar o plugin para abrir projetos Eclipse. Abra a Perspectiva Svn, e clique em New -> Repository Location, na janela que abriu adicione a url citada na página do projeto WinZipAES, como na imagem abaixo.
Observe que o campo User, e Password estão vazios, o que indica que faremos acesso como usuário anônimo, e por isso, com permissão apenas de leitura. Clique em Finish,e depois com o botão direito do mouse sobre o repositório que apareceu na aba "SVN Repositories" do Eclipse e faça o checkout.
Troque de Perspectiva, e observe que apareceu agora um projeto chamado "winzipaes". Vá em src, e no pacote de.idyl.crypto.zip haverá duas classes exemplificando como compactar e descompactar arquivos usando senha.Abra primeiro a classe AesZipFileEncrypter, vá no método "main", lá temos duas linhas de código como na figura abaixo.

Como podem observar na imagem acima, este já é o exemplo e teste da implementação. Na primeira linha do método estamos instanciando um objeto de AesZipFileEncrypter que recebe como parametro de entrada o caminho com o nome para o arquivo zip que terá a senha. Na segunda linha temos a chamada para o método "zipAndEncrypt", que compacta o arquivo e insere a senha passada no outro parametro.
Para descompactar, abra a classe AesZipFileDecrypter.java contida no mesmo pacote. O código esta como na figura abaixo.

Para descompactar o exemplo instancia um objeto da classe AesZipFileDecrypter que recebe como parametro o caminho para o nosso arquivo compactado com senha, e chama o metodo "extractEntry" na 3ª linha passando a entrada para o arquivo que se quer descompactar, o File destino deste arquivo, e a senha.
The Real Life!
Bom, daí vocês me perguntam, "Eu tenho o fonte, e como usar na minha aplicação?". Simples, por questão de segurança, comentem os métodos "main" das duas classes de exemplo, criem um .jar, e adicionem no classpath do seu projeto, seja ele em NetBeans, Eclipse, ou outra IDE qualquer. Ah! Aconselho criar dois métodos estáticos, um compactando, e outro descompactando, em alguma classe utilitária da sua aplicação.Para quem se interessar, e quiser aprofundar no assunto, recomendo a leitura dos link's da referência.
Espero que tenham gostado. Grande abraço.
Referência:
http://www.winzip.com/aes_info.htm
http://www.eclipse.org/subversive/downloads.php