| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 11:09:02
|
rafael.ribeiro
What is classpath?
Membro desde: 20/06/2006 11:03:21
Mensagens: 7
Offline
|
Bom, minha dúvida pode ser simples para alguns mas apesar de dar uma olhada na parte de criptografia do site do java ainda não entendi como funciona (http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html#SimpleEncrEx) ...
Estou precisando criar uma classe genérica com dois métodos, 1 pra criptografar e outro pra descriptografar, o método de criptografar irá ser chamado quando antes de setar o dado no banco e o de descriptografar quando recuperar ...
Esse lance de Secret key, Cipher e etc ficou muito complicado ... a solução que achei para meu problema era setar uma senha como uma string constante na classe genérica e usaria ela tanto para cript como decript ... Alguém pode me ajudar a respeito? Se alguem tiver algum exemplo para criptografar e descriptografar dados tb agradeceria ...
Abraços
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 11:18:55
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você não vai fazer "criptografia" mas sim "esconder os dados" - já que qualquer carinha que tem acesso à seu .class pode obter os dados.
A palavra-mágica é PBE; vou ver se tenho um exemplo pronto para isso.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 11:21:44
|
rafael.ribeiro
What is classpath?
Membro desde: 20/06/2006 11:03:21
Mensagens: 7
Offline
|
correto, só que esse .class ficará no lib do framework que uso aqui na empresa =), ninguem tem acesso ...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 11:56:26
|
rafael.ribeiro
What is classpath?
Membro desde: 20/06/2006 11:03:21
Mensagens: 7
Offline
|
e ai thingol, achou esse exemplo seu para salvar minha pele? =)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 12:02:08
|
rafael.ribeiro
What is classpath?
Membro desde: 20/06/2006 11:03:21
Mensagens: 7
Offline
|
Andei pesquisando o PBE que vc me aconselhou e percebi que existem dois métodos para ajudar, que são:
int getIterationCount()
Returns the iteration count or 0 if not specified.
byte[] getSalt()
Returns the salt or null if not specified.
A minha dúvida não é somente no caso do que utilizar, mas sim como utilizar a criptografia no java, até mesmo usando essa solução que sugeriu ... Usar o Cipher e etc ... nunca fiz nada quanto a criptografia =/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/06/2006 13:14:43
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Vamos lá.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/06/2006 14:24:11
|
rafael.ribeiro
What is classpath?
Membro desde: 20/06/2006 11:03:21
Mensagens: 7
Offline
|
Muito obrigado thingol ... qualquer coisa estamos ai ... =))
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 10:46:09
|
rafael.ribeiro
What is classpath?
Membro desde: 20/06/2006 11:03:21
Mensagens: 7
Offline
|
Thingol, achei uma resposta sua a tempos aqui no fórum sobre o uso do "salt" e do "iteration count" que é essa:
.....
"O "salt" deve ser diferente para cada mensagem criptografada com a mesma senha (tipicamente é um dado aleatório).
Esse "salt" deve ser enviado com a mensagem criptografada, em claro. É que esse "salt" ajuda a evitar alguns problemas que ocorreriam se você sempre produzisse a mesma mensagem criptografada para a mesma mensagem em claro, com a mesma senha. (É parecido com o conceito do "initialization vector" do modo CBC, CFB e OFB; na verdade, o IV é função desse salt.).
Se puder, use um salt com o mesmo tamanho do IV para o algoritmo em questão (16 bytes para AES, 8 bytes para DES).
O "iteration count" é a contagem de iterações de um algoritmo que recebe como parâmetros a senha e o salt, para produzir a chave e o IV. A idéia é que se o "iteration count" for muito grande (da ordem de 1000), demore muito para você obter a senha se por acaso você descobrir a chave."
.....
Pois bem, o código que me enviou passa dados específicos como parâmetro do PBEParameterSpec para o "salt" e o "iteration count", tentei procurar na API mas não está bem comentado e não consegui entender ...
Será que tem como me explicar quando que preciso gerar dados aleatórios para o "salt"? O "iteration count" eu entendi ... mas essa parte do "salt" está um pouco dificil pois estou precisando documentar o porque utilizei ... Percebi que devido ao algoritmo DES utilizado tenho que gerar um salt de byte 8, só nao sei o que ele faz especificamente ... poderia me ajudar?
Grato ...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2006 13:45:49
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
É que esse "salt" ajuda a evitar alguns problemas que ocorreriam se você sempre produzisse a mesma mensagem criptografada para a mesma mensagem em claro, com a mesma senha
O uso do "salt" é opcional (se você não tiver como armazenar esse "salt" para cada mensagem criptografada, você pode fixá-lo, como fiz no código acima).
Usar o salt é interessante se você quiser proteção contra o seguinte ataque: a pessoa mal-intencionada pegou seu arquivo de senhas criptografadas, e conhece as senhas de alguns usuários. Só que ela descobriu que há várias senhas que, criptografadas, geram o mesmo resultado. Isso quer dizer que essas senhas são iguais. Por exemplo, o usuário "parreira", "zagalo" e "tele" têm a mesma senha, que criptografada dá "qjl2IlSjWashTdaJq//BYg==". Se você souber que a senha para o usuário "parreira" é "ronaldo", então você vai descobrir que a senha para "zagalo" e "tele" é "ronaldo".
Se usar o salt, você precisa gerar (e armazenar) um "salt" diferente para cada usuário. Digamos: "Ne5Wx5fmqdQ=", "tz0Ga6E7Oo=" e "psPHVnBF86A=". Mesmo que a senha seja igual para os três ("ronaldo"), ela será criptografada para resultados diferentes ("iGaCLw6XSHpEORO3L9J1rw==", "iOmjvTsw9aG/l+kSM3Em1Q==" e "mXa6R6v0z77fwuJyU3x6jg==") e você não vai conseguir descobrir a senha do Zagalo e do Telê dessa forma simples.
|
|
|
 |
|
|