| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/12/2008 18:49:49
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
Olá pessoal,
preciso urgente realizar uma criptografia DES em java...achei o seguinte exemplo:
mas o problema é q eu preciso passar uma chave privada, em hexa e aqui eu nao tenho esta opcao, e eu nao achei como passar uma chave criada por mim no lugar de KeyGenerator.getInstance("DES").generateKey();
vlew...abraços.
This message was edited 1 time. Last update was at 04/12/2008 18:50:58
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/12/2008 19:01:27
|
andre.conde
What is classpath?
Membro desde: 28/11/2008 16:43:02
Mensagens: 8
Localização: SBC
Offline
|
Opa, tente isto para criar sua chave:
SecretKey key2 = new SecretKeySpec(arrayByte, "DES");
Até mais
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 15:09:03
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
ok, ele aceitou, mas aceita somente uma cheve de 8 digitos...achei estranho, ou devo estar informando de uma maneira errada...pq preciso informar uma chave hexa...por exemplo : 5446615264454F49.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 15:14:48
|
andre.conde
What is classpath?
Membro desde: 28/11/2008 16:43:02
Mensagens: 8
Localização: SBC
Offline
|
Posta como você está fazendo agora.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 15:22:17
|
andre.conde
What is classpath?
Membro desde: 28/11/2008 16:43:02
Mensagens: 8
Localização: SBC
Offline
|
new SecretKeySpec(key.getBytes(), "DES");
Já tentou ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 15:32:39
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
Lá vai...se a chave for de 8 digitos funciona, mas com essa nao funciona
obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 15:38:57
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você precisa pegar sua chave, que está em uma string hexadecimal de 16 caracteres, e transformá-la em um array de bytes de 8 bytes.
Isso é só uma coisa braçal e acho que é fácil você fazer isso com substring e Integer.parseInt.
Por exemplo, você pode usar ((byte) Integer.parseInt ("4F", 16)) para obter o byte 0x4F.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 16:44:48
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
thingol,
tem algo errado...veja se estou correto, eu teria q converter o seu exemplo assim :
byte[] teste = (byte) Integer.parseInt ("4F", 16);
?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 16:48:43
|
andre.conde
What is classpath?
Membro desde: 28/11/2008 16:43:02
Mensagens: 8
Localização: SBC
Offline
|
Em vez de try catch, joga a excessao pra cima, com throws, para pelo menos você ver o que está acontecendo no seu código. A Excessao do seu código é esta:
Exception in thread "main" java.security.InvalidKeyException: Invalid key length: 16 bytes
at com.sun.crypto.provider.DESCipher.engineGetKeySize(DashoA6275)
at javax.crypto.Cipher.b(DashoA12275)
at javax.crypto.Cipher.a(DashoA12275)
at javax.crypto.Cipher.a(DashoA12275)
at javax.crypto.Cipher.a(DashoA12275)
at javax.crypto.Cipher.init(DashoA12275)
at javax.crypto.Cipher.init(DashoA12275)
at pacote1.CryptoEx1.<init>(CryptoEx1.java:22)
at pacote1.CryptoEx1.main(CryptoEx1.java:71)
Ele não está aceitando uma chave privada de 16 bytes.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 17:17:41
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
tap_pedroso wrote:thingol,
tem algo errado...veja se estou correto, eu teria q converter o seu exemplo assim :
byte[] teste = (byte) Integer.parseInt ("4F", 16);
?
Não é bem isso, a dica que lhe dei é para converter apenas um dos bytes; não todos, que acho que você consegue codificar um loop. É por isso que eu falei em "substring" e disse quantos bytes tem de ter o array de bytes.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/12/2008 18:37:28
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
sim, eu entendi o que vc quis dizer, mas antes eu tentei converter somente 1 valor hexa desta maneira que escrevi para ver o retorno e se nao acontecia nenhum erro.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/12/2008 10:02:40
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
thingol, veja se vc consegue me dar um ultimo help...tentei colocar os valores da chave hexa dentro do array de bytes, mas ele entra no array como decimal, nao estou conseguindo chegar ao valor correto...eu tenho feito em delphi uma aplicação que faz o DES e funciona legal...o valor em texto claro é 9626000715612011, a chave é 5446615264454F49, e o valor cifrado com DES é 0146423EE2145003...em java o retorno nao bate nunca...vou posta o codigo que estou passando para o array de bytes e o codigo completo...muito obrigado pela força.
Tentando passar a chave hexa para um array de byte
codigo completo
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/12/2008 10:05:40
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você sabe qual é o "modo" usado no Delphi? Provavelmente é ECB, e não CBC como você está usando por default.
Você teria de especificar, em vez de simplesmente DES, "DES/ECB/NoPadding".
http://java.sun.com/javase/6/docs/api/javax/crypto/Cipher.html
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/12/2008 10:27:04
|
tap_pedroso
JavaBaby
Membro desde: 11/06/2008 12:38:26
Mensagens: 90
Offline
|
ok, vou dar uma olhada aqui...mas o codigo para montar o array de bytes era isso mesmo?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/12/2008 10:33:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Acho que sim.
|
|
|
 |
|
|