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
mto bom, mano...
ResponderExcluirprincipalmente no nosso caso, isso garante a segurança necessária na manipulação de arquivos.
gde abraço
Man, you haved saved my life! Thanks a fuckin lot!!
ResponderExcluirHAVED!!!!!!!!!!???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
ResponderExcluirOH MY!!!
What a ridiculous english!!
Please buy a dictionary..
Olá, estou precisando muito usar este código, mas não estou conseguindo, fiz o checkout do svn, gerei o .jar e adicionei ao classpath do meu código, mas na classe AesZipFileEncrypter não tem o método main, isso não importa eu sei, o código pode ter sido alterado? quando tento instanciar o enc ele pede mais parâmetros do que tem no exemplo, alguém pode me dar um help?
ResponderExcluir