Criptografia e descriptografia de dados

16 respostas
L

Estou precisando criptografar, enviar para o MySQL e depois descriptografar.
Não é criptografia de senha, mas de dados do tipo numérico.
Exemplo: Salário ou cartão de crédito.
Depois necessito gravar no MySQL no formato numérico.
Como faço isto?

Desde já agradeço quem der uma mão.

16 Respostas

S

Isso é um clone?
http://www.guj.com.br/posts/list/84673.java

Y

Você vai manipular esse dado de alguma maneira no banco?
Não pode armazenar de maneira criptografada como Varchar e depois converter para um double quando decriptografar novamente na classe?

Abraço

L

spycall:
Isso é um clone?
http://www.guj.com.br/posts/list/84673.java

Por favor, descondere esta outra mensagem. Foi em duplicidade.

L

yorgan:
Você vai manipular esse dado de alguma maneira no banco?
Não pode armazenar de maneira criptografada como Varchar e depois converter para um double quando decriptografar novamente na classe?

Abraço

Não vou manipular este dado na banco, mas tenho algumas restrições para criação de colunas.
Neste caso estaria aproveitando o próprio campo já definido como numérico para este fim.

O

veja se isso ajuda:

http://www.jasypt.org/index.html

L

Não vou manipular os dados no banco de dados mas tenho uma restrição de criar colunas.
Neste caso gostaria de estar aproveitando o mesmo campo atual para guardar a informação criptografada.

A

(( não querendo ser chato, mas já sendo, isso também não a ajudara a resolver seu problema…
mas o certo não seria CIFRAR & DECIFRAR ))…

L

Pelo que verifiquei neste site está sendo utilizado com o hibernate.
Gostaria de uma solução sem este recurso.

Obs: Desculpe as duplicidades, mas está 10 a 0 para o site do forum. Talvez problema de BIOS :slight_smile:

L

Não conheço o conceito de cifrar e decifrar.
Existe algo para converter numéricos?

O

1o.) O Jasypt não é só para usar com Hibernate: http://www.jasypt.org/encrypting-numbers.html
2o.) A criptografia tem que ser “forte”? Se a questão de segurança é para que alguém que faça um select no banco não consiga saber o valor do campo, sugiro aplicar um algoritmo bem simples: XOR do número com um máscara fixa http://www.sap-img.com/java/java-bitwise-logical-operators.htm.
3o.) Se for para utilizar algum algoritmo “forte” de criptografia, precisa ser um algoritmo simétrico http://en.wikipedia.org/wiki/Symmetric_key_algorithm. Como você quer usar números como entrada e saída, é preciso saber o tamanho do campo e o os valores máximos e mínimos que você vai aceitar para determinar qual o algoritmo ideal. Tem que estudar JCE.

Y

Se for pra bloquear a liberação do valor do campo para determinados usuários, você pode utilizar o MySQL Proxy que interceptaria os SELECT’s e, caso o usuário requisitante não tivesse permissão, apagaria o valor do campo para aquele ResultSet.

L

O problema é que o sistema estará sendo instalado em um host para hospedagem, ou seja, não sei quem tem acesso ao o que.
Neste caso a criptografia é a melhor situação.
Ainda estou analisando a opção que o oyama deu.

A

Sobre a Criptografia:
( eu diria ), se tu quer criptografia “forte” mesmo, usa criptografia Assimétrica ( baseada em chave pública e privada ( chaves distintas para cifrar e decifrar ))…
Criptografia Simétrica usa chave secreta ( uma única chave para cifrar e decifrar )…
Porém, o custo computacional da criptografia Assimétrica é superior ao da criptografia Simétrica.
Porém ( novamente ) com a criptografia Assimétrica vai ser difícil ( perto do impossível ) de alguem ( além do detentor da chave “privada” ) ter acesso a informação…

L

Referente a criptografia tem um ponto que é importante que você mencionou.
O custo computacional.
Considere a seguinte situação, um relatório sendo gerado pelo JasperReport em formato PDF com 20.000 linhas e cada linha possuir pelo menos 2 campos de informação para decriptografar.
Neste caso é disparado 40.000 vezes o processo de descriptografar, o que pode ser muito custoso para o servidor.
Analisando por este angulo, talvez a alternativa do XOR se aplique bem, pois o importante é embaralhar os dados não ter uma segurança forte.
O que acha?

A

concordo, plenamente…
como mencionei, criptografia Assimétrica é cara computacionalmente…
Acredito que para fazer isso que você mencionou ( com criptografia Assimétrica ) deveriá-se ter um servidor “razoávelmente bom”…
Para seu caso, acho que criptografia Simétrica se aplica ( já que a questão não é única e exclusivamente a segurança, e sim, somente “dificultar” o acesso… )…

““Eu sómente quis expor o que “EU” entendo por criptografia “forte”…””…
e BOA SORTE…

L

Arlindo, obrigado pela ajuda.
Não tenho um bom conhecimento de conceitos, mas muita vontade de fazer.
Agradeço muito a ajuda e ainda estou digerindo este monte de informação.
Mas já deu um bom caminho das pedras.
O ponto principal é saber qual os resultados vamos obter lá na frente.
Neste caso já ajudou a ver onde haveria problemas e evitou ter um bom retrabalho.
Especialmente porque só perceberia estas coisas em produção.

Obrigado novamente.

:wink:

Criado 12 de março de 2008
Ultima resposta 14 de mar. de 2008
Respostas 16
Participantes 7