| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 10:25:15
|
Pilantra
JavaEvangelist
![[Avatar]](/images/avatar/0b96d81f0494fde5428c7aea243c9157.png)
Membro desde: 25/01/2005 03:29:00
Mensagens: 394
Localização: Maringá - PR
Offline
|
E ae pessoal.
Eu tenho um arquivo XML que guarda as informações para conexão com o banco de dados. Mas como o XML é super inseguro, pensei em criptografar pelo menos a senha que está na tag <senha />. Procurei na net e achei uma classe que faz isso, usando DES. Fiz um teste e funcionou perfeitamente como eu queria. Fiz outro teste gravando no XML a senha criptografada e funcionou. Mas quando eu quero descriptografar ela, retorna o seguinte erro:
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at classes.Kriptonita.decriptar(Kriptonita.java:92)
at gui.Configuracoes.<init>(Configuracoes.java:55)
at gui.Principal.btConfigActionPerformed(Principal.java:265)
at gui.Principal.access$300(Principal.java:1
at gui.Principal$4.actionPerformed(Principal.java:126)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:603
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:205
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Pesquisei em tudo que é lugar e não encontrei uma solução eficaz. Alguém sabe como resolver isso ou tem algum algoritmo de criptografia e descriptografia eficaz?
Segue a classe que eu adaptei:
Agradeço muito a ajuda de vocês.
Abraços.
This message was edited 2 times. Last update was at 23/10/2007 12:50:20
|
Gosta de Linux e Java? Acesse: http://andersonajx.blogspot.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 10:33:14
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Quando você usa "DES" na verdade está usando "DES/ECB/NoPadding" se não me engano. Nesse caso pode dar problemas se a entrada não for um múltiplo de 8 bytes.
Tente com "DES/CBC/PKCS7Padding" (cuidado porque a saída é sempre um múltiplo de 8 bytes (ou é o tamanho original, acrescentado de 8), e você tem de estar preparado para isso.
Se sua entrada tiver 7 bytes, o resultado criptografado tem 8, e se sua entrada tiver 8 bytes, o resultado criptografado tem 16.
Dica: procure aqui no fórum um programa que escrevi que usa "PBEWithMD5AndDES". Ele permite criptografia com senha e já deixa o resultado codificado bonitinho em Base-64.
This message was edited 1 time. Last update was at 23/10/2007 10:34:15
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 10:40:29
|
Pilantra
JavaEvangelist
![[Avatar]](/images/avatar/0b96d81f0494fde5428c7aea243c9157.png)
Membro desde: 25/01/2005 03:29:00
Mensagens: 394
Localização: Maringá - PR
Offline
|
Humm, eu mudei o construtor e quando eu peço para Salvar, me da esse erro:
java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/CBC/PKCS7Padding
at javax.crypto.Cipher.getInstance(DashoA13*..)
at classes.Kriptonita.<init>(Kriptonita.java:33)
at gui.Configuracoes.<init>(Configuracoes.java:46)
at gui.Principal.btConfigActionPerformed(Principal.java:265)
at gui.Principal.access$300(Principal.java:1
at gui.Principal$4.actionPerformed(Principal.java:126)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:603
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:205
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Eu fiz o construtor assim:
O que está errado?
|
Gosta de Linux e Java? Acesse: http://andersonajx.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 10:41:39
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Desculpe, é "DES/CBC/PKCS5Padding". Não sei porque pus 7 em vez de 5.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 11:14:12
|
Pilantra
JavaEvangelist
![[Avatar]](/images/avatar/0b96d81f0494fde5428c7aea243c9157.png)
Membro desde: 25/01/2005 03:29:00
Mensagens: 394
Localização: Maringá - PR
Offline
|
Valeu thingol, mas agora olha que estranho, está faltando parâmetros:
E o erro retorna:
java.security.InvalidKeyException: Parameters missing
at com.sun.crypto.provider.SunJCE_f.a(DashoA13*..)
at com.sun.crypto.provider.DESCipher.engineInit(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at classes.Kriptonita.<init>(Kriptonita.java:36)
at gui.Configuracoes.<init>(Configuracoes.java:46)
at gui.Principal.btConfigActionPerformed(Principal.java:265)
at gui.Principal.access$300(Principal.java:1
at gui.Principal$4.actionPerformed(Principal.java:126)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:603
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:205
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Nossa, como é xarope isso hehehehehe. Eu não achei o seu programa. Você pode mandar pra mim por e-mail?
|
Gosta de Linux e Java? Acesse: http://andersonajx.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 12:31:30
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Vou postar de novo. Eu tinha feito para senhas de bancos de dados, mas serve também para o seu caso (que é um XML).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 12:43:09
|
Pilantra
JavaEvangelist
![[Avatar]](/images/avatar/0b96d81f0494fde5428c7aea243c9157.png)
Membro desde: 25/01/2005 03:29:00
Mensagens: 394
Localização: Maringá - PR
Offline
|
Valeu thingol, já rodei o código, agora eu vou testar com meu XML, qualquer coisa eu posto aqui.
Obrigado pela força.
Abraços.
|
Gosta de Linux e Java? Acesse: http://andersonajx.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2007 12:51:38
|
Pilantra
JavaEvangelist
![[Avatar]](/images/avatar/0b96d81f0494fde5428c7aea243c9157.png)
Membro desde: 25/01/2005 03:29:00
Mensagens: 394
Localização: Maringá - PR
Offline
|
Pilantra wrote:Valeu thingol, já rodei o código, agora eu vou testar com meu XML, qualquer coisa eu posto aqui.
Obrigado pela força.
Abraços.
Nossa, funcionou perfeitamente cara. Muito obrigado mesmo, essa classe vale ouro hehehe...
Abraços.
|
Gosta de Linux e Java? Acesse: http://andersonajx.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/08/2008 16:23:44
|
vm
Thread.start()
Membro desde: 29/12/2006 19:49:36
Mensagens: 49
Offline
|
Pilantra
Valeu pela dica. Me poupou umas horas para desenvolver.
Valeu mesmo
|
Desenvolvedor J2EE / J2ME
michelvalent@gmail.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2009 09:54:52
|
ricardocomp
GUJ Ranger
![[Avatar]](/images/avatar/c5e0299714bda49d29f444c4ac527453.jpg)
Membro desde: 05/03/2008 09:59:06
Mensagens: 764
Offline
|
Olá Galera,
eu sei q este
tópico já está off,
mas thingol era essa
a classe q eu precisava,
mas estou com algumas
dúvidas pq na linha 13 vc fla:
// para simplificar o exemplo. Use alguma outra classe para converter
base 64 é pq o algoritmo é de 64 bits?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/01/2009 10:36:04
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Base-64 é uma forma de codificação de dados binários.
http://pt.wikipedia.org/wiki/Base64
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2009 08:33:50
|
ricardocomp
GUJ Ranger
![[Avatar]](/images/avatar/c5e0299714bda49d29f444c4ac527453.jpg)
Membro desde: 05/03/2008 09:59:06
Mensagens: 764
Offline
|
Jóia thingol,
Obrigado pela
ajuda, mas
na linha 13
o q vc quis dizer
com o comentário
mas no código eu já ñ uso a base-64 para criptografar?
Abraço.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/12/2010 13:38:34
|
Leandro Rocha
What is classpath?
![[Avatar]](/images/avatar/1eca89f52738485f0fbea26c8b87f558.jpg)
Membro desde: 07/12/2010 23:20:17
Mensagens: 9
Offline
|
thingol wrote:Vou postar de novo. Eu tinha feito para senhas de bancos de dados, mas serve também para o seu caso (que é um XML).
Olá...
thingol, muito boa essa classe ai para criptografia... ajudou muito cara.. obrigado...
Tenho dúvida com relação ao 'salt', eu sei pra que serve mas não sei como se implementa...
Só gostaria de saber se o tal do 'salt' (salto) está presente nessa classe ai que você implementou?
Caso essa classe não possua o 'salt' poderia me dar um exemplo de como implementar?
Desde já muito obrigado...
This message was edited 1 time. Last update was at 09/12/2010 13:41:10
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/12/2010 14:54:54
|
Leandro Rocha
What is classpath?
![[Avatar]](/images/avatar/1eca89f52738485f0fbea26c8b87f558.jpg)
Membro desde: 07/12/2010 23:20:17
Mensagens: 9
Offline
|
????
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/12/2010 23:26:29
|
Leandro Rocha
What is classpath?
![[Avatar]](/images/avatar/1eca89f52738485f0fbea26c8b87f558.jpg)
Membro desde: 07/12/2010 23:20:17
Mensagens: 9
Offline
|
Por favor... alguém??
|
|
|
 |
|
|