| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/07/2006 16:07:04
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Artigo: Zip com Java: Compressão e Descompressão de Dados
Conheça a API do Java que dá a possibilidade de manipular e criar arquivos com dados compactados.
Artigo escrito por: Daniel Destro
Confira aqui: http://www.guj.com.br/java.tutorial.artigo.181.1.guj
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/07/2006 16:15:28
|
marceloplis
GUJ Ranger
Membro desde: 22/08/2005 10:08:21
Mensagens: 877
Localização: São Paulo - SP
Offline
|
O link está errado, está apontando pro artigo sobre axis.
Correto = http://www.guj.com.br/java.tutorial.artigo.181.1.guj
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 00:47:18
|
boaglio
Moderador
![[Avatar]](/images/avatar/c0c7c76d30bd3dcaefc96f40275bdc0a.png)
Membro desde: 09/09/2002 21:23:39
Mensagens: 1865
Localização: Sampa City
Offline
|
danieldestro, gostei do seu tutorial.
Vc sabe como trabalhar com arquivos ZIP com senha?
Não achei muita informação sobre esse assunto...
|
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de Java via MP! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 09:46:53
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Não achei nada a respeito!
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 09:58:20
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
"Arquivos zip" com senha são difíceis de trabalhar, porque há pelo menos três ou quatro tipos desses arquivos.
O primeiro e o que está devidamente documentado na definição do formato ZIP original por Phil Katz, usa um algoritmo ligeiramente inseguro.
Os outros tipos dependem do fabricante - o Winzip tem um formato desses, a PKWare (dona do PKZip original) tem um outro formato, e o 7-Zip tem ainda outro formato. Acho que o BraZip tem ainda outro formato.
Pelo menos a PKWare documentou seu formato.
É um pouco chato escrever um programa que implemente um dos formatos documentados (principalmente porque você tem de testar se eles são compatíveis com os pacotes originais - sabe como é especificação ), portanto é por isso que só achei compressão Zip com senha em pacotes pagos.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 10:00:54
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
thingol, o senhor é o dono da verdade absoluta. Não tem explicação para saber tanto de tudo. Parabéns!
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 10:09:37
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
É que eu tive de implementar um arquivo .zip que era dividido em disquetes, e eu tinha lido a especificação. Como era interessante que esse arquivo fosse criptografado, tentei implementar a especificação da PKWare, mas por falta de tempo usei um método mais simples mesmpo.
EDIT - não que o método fosse muito complexo, mas infelizmente era o famoso problema de "interoperabilidade". Não achei tempo para fazer os testes, e além disso, como sabia que o método original da PKWare era ligeiramente inseguro, não o usei.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 10:27:46
|
boaglio
Moderador
![[Avatar]](/images/avatar/c0c7c76d30bd3dcaefc96f40275bdc0a.png)
Membro desde: 09/09/2002 21:23:39
Mensagens: 1865
Localização: Sampa City
Offline
|
Pelo que eu pesquisei só achei uma solução paga da empresa IP*Works.
|
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de Java via MP! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 10:54:45
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
falando em arquivo zip, senha,
alguem ja fez algum classloader para bytecodes criptografados ?
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 11:00:39
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Preciso achar esse artigo de novo na JavaWorld. Esse artigo ao mesmo tempo mostra como montar esse classloader e porque ele é inseguro
EDIT - É este: http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 11:16:33
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Compressão de dados já foi minha paixão. Cheguei a escrever 4 capítulos de um livro que nunca foi lançado porque abortei o projeto ao saber que o Mark Nelson ia lançar o dele. Aprendi compressão com métodos tipo dicionário (usado pelo PKZIP e afins) com o famoso artigo do Mark lá na Dr Dobbs.
Usei em um programa de comunicação serial tipo laplink que comprimia os dados antes de enviar.
Sobre o artigo do JavaWorld, se é o que estou pensando, o problema de ClassLoader que criptografa, é que a carga na memória é aberta não criptografada (e descomprimida se for o caso). Se alguém fizer o dump da memória obtem a informação que se queria esconder. Mas eu ainda acho boa solução pois pelo menos do ladrão mais bobinho a gente se protege. Já usei em um sistema que fazia hot deploy de atualizações de versão sem tirar o sistema do ar.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 11:20:53
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
Vou dar uma olhada no artigo, valeu thingol.
Isso pq estes dias estava discutindo com meu gerente a melhor forma de proteger codigo para mandar pro cliente mal intencionado.
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 16:27:39
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
vamos la ...
fiz ambos os testes que o Vladimir propos no artigo. o mais interessante é a intercepcao do metodo defineClass (..) que na minha opiniao pode ser resolvida de 2 formas.
distribuir o JRE com a aplicacao ( no caso é meio chato pois a sun tem um contrato pra poder fazer isso)
e o mais viavel que eu acho, é fazer um checksum do rt.jar levando em conta as diferentes versoes de JVM. caso nao bata o checksum ... o programa ou serviço aborta. e pra evitar hotdeploy da classe ... ele faz verificacao de tempos em tempos ...
paranoico ? hehehe
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 21:09:18
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
fmeyer wrote:e o mais viavel que eu acho, é fazer um checksum ...
paranoico ? hehehe
Não é não! Eu fazia quase assim já em 1994. Só que eu não usava checksum pois trocando bytes, o checksum é o mesmo. Eu usava CRC.
Meu antigo método (acho que já descrevi aqui em outra pasta):
1. No meu programa Clipper havia uma constante logo como primeira coisa no sistema.
2. Eu fiz um programinha que calculava o CRC do trecho de programa da linha seguinte à constante até o fim.
3. Usando um editor de binário, alterava a tal constante pelo valor do CRC calculado.
Meu programa tinha uma função que recalculava o CRC do mesmo modo que meu programinha e comparava com o valor do CRC. Se o cliente alterasse 1 byte, o CRC não batia mais.
Além disso, meus programas eram vendidos com relatórios personalizados para cada cliente. No topo de cada relatório saia o nome do cliente. Assim, mesmo que um funcionário do cliente roubasse o sistema, ele não podia alterar o nome que aparecia no topo dos relatórios. Este nome ficava dentro do sistema BEM ESCONDIDO.
No Java onde não existe um arquivo .exe monolítico como era o caso do Clipper, você pode pensar qualquer coisa. Mas nunca com checksum que não vale nada. Use sempre CRC, se possível CRC32. Para melhorar a performance do cálculo do CRC se deve fazer como a turma que escreve programas de comunicação e seguir os conselhos do grande Joe Campbell: armazenar uma tabela de lookup ao invés de calcular tudo na raça.
Acho que você deve encontrar várias APIs free de cálculo de CRC ou usar o que já vem com o Java na classe java.util.zip.CRC32. Compare os desempenhos pois isto pode demorar um tiquinho se nãofor bem escrito.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/07/2006 22:20:43
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Que tal distribuir todo código dentro de um binário (exe) e colocar toda lógica de classloading em código nativo? AOP não funciona com métodos natívos.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
|
|