Criptografia/Descriptografia de dados

Olá amigos !
Sou iniciante em java e peço desculpas se minha dúvida for tosca.
Estou precisando criptografar uma String que contém diversas informações e que possa ser descriptografada posteriormente.
Utilizei o pacote security com o digest, mas descobri que é uma criptografia de mão única que não pode ser descompactado, apenas comparado.
Alguem aqui conhece alguma classe que tenha as duas vias, compactação/descompactação.

Um abraço

pq vc não faz a sua classe de criptografia…

eu sei q é reinventar a roda, mas conta como um ótimo aprendizado. Isto se vc tiver tempo pra isso.

Use a classe Cypher

Olá

Estude as classes de javax.crypto.*. Procure entender de criptografia para saber exatamente qual grau de segurança vai obter. Quanto maior a segurança pior a performance.

Um começo pode ser achado em http://www-106.ibm.com/developerworks/java/edu/j-dw-javasec1-i.html e http://java.sun.com/developer/technicalArticles/Security/JCE/

Não desenvolva seu próprio método para criptografar a menos que suas necessidades de criptografia sejam muito simples. O melhor método que inventar poderá ser aberto em poucos minutos. Use um método consagrado por todo o mundo.

Há bons livros de criptografia para Java. E sobre criptografia em geral recomendo bastante o livro Practical Cryptography de Niels Ferguson e Bruce Schneier. Ver detalhes em http://www.schneier.com/book-practical.html

[]s
Luca

Amigos, agradeço a todos o tempo dispensado !
Vocês me ajudaram muito, obrigado !

[quote=“cariocathi”]pq vc não faz a sua classe de criptografia…

eu sei q é reinventar a roda, mas conta como um ótimo aprendizado. Isto se vc tiver tempo pra isso.[/quote]

Esse deve ser O pior conselho que se pode para quem quer trabalhar com criptografia. Serio. Acho que eu nao preciso nem explicar o pq, sabendo que tem gente que passa anos soh pra acertar a mao num algoritmo desses. Dai voce chega em 1 semana e fala “aha! ta funcionando”. Tsc, tsc… :wink:

[quote=“cv”][quote=“cariocathi”]pq vc não faz a sua classe de criptografia…

eu sei q é reinventar a roda, mas conta como um ótimo aprendizado. Isto se vc tiver tempo pra isso.[/quote]

Esse deve ser O pior conselho que se pode para quem quer trabalhar com criptografia. Serio. Acho que eu nao preciso nem explicar o pq, sabendo que tem gente que passa anos soh pra acertar a mao num algoritmo desses. Dai voce chega em 1 semana e fala “aha! ta funcionando”. Tsc, tsc… ;)[/quote]

Nossa…com certeza naum é boa idéia…iria ser um show de soma codigo ascii pra cá diminui pra la, faz loop concatena caracter affff…e depois se isso for pra web…com uma simples cagra de dados a senha é quebrada e no teu site aparece igual apareceu num que eu prestei servico. Uma msg bem grande dizendo.

“Mas que senha facil de quebrar.”

Imagina o que o gerente de TI fez com esse programador em?? :frowning:

Desculpa, mas é uma péssima idéia.

[]'s

Po vai falar que vocês nunca brincaram de fazer funções que “criptografavam” strings usando xor simples ? :twisted: é mó legal… você chama o método e passa uma frase, ela volta toda zuada, você passa a frase zuada pro mesmo método e a frase original aparece…

Olá

Vegetto, a gente fazia isto em assembler nos mainframes na década de 70. Hoje há modos melhores e uma das grandes vantagens de usar Java é que esta é uma das linguagens com mais recursos atualizados de criptografia incorporado na API básica.

[]s
Luca

[quote]
xor é tudo que voce precisa para implementar o único algoritmo de criptografia inquebravel que exite.[/quote]

Luca, eu sei… eu estava brincando apenas… Eu fiz varias vezes isso quando eu tava aprendendo a usar loops e manipular strings (isso em vb… argggg)

É bem por aí louds… :slight_smile:

Com certeza…mas nunca para um sistema em produção :roll:

Capite

[]'s

Aê galera, o conselho de criar uma classe pode não ser tão ruim… Se ele usar a classe BigInteger e montar uma criptografia baseada em RSA, escolher dois primos com número de algarismos distantes, pode dar certo!!

Enfase no “pode” dar certo. Pra que arriscar, se ja tem tudo isso pronto dentro da API da linguagem?

Olá

Darkvib, se você tem uma BOA base matemática e gosta de criptoanálise, dê uma olhada nos seguintes livros:

Handbook of applied cryptography by Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone (PDFs free)
http://www.cacr.math.uwaterloo.ca/hac/

Applied Cryptography by Bruce Schneier
http://www.schneier.com/book-applied.html

[]s
Luca

Vejamos, ele sabe escolher bons geradores seguros de números aleatorios? Ele sabe que precisa? Ele sabe verificar por strong primes? Ele sabe que precisa? Ele sabe como implementar um entropy pool seguro? Ele sabe que precisa?

Ta vendo, RSA não é apenas gerar dois primos e fazer umas continhas bobas. Para um trabalho escolar é ate aceitavel, para usar em um lugar que precisa de PKI é loucura.

Muito melhor usar algoritmos, já implementados, que existem teses de doutorado falando de como derrotam os varios tipos de criptanálise.

Fala galera,

O problema é q não foi especificado qual o grau de segurança da aplicação a ser desenvolvida… Eu acho q como o cara é iniciante em java, NUNCA seria dada a ele a tarefa de cuidar da segurança de dados importantes de uma empresa. Eu acredito q a questão seja um trabalho de escola mesmo (se for esse o caso, ele pode até conseguir uns pontos extras criando a classe…).

T+

HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA :smiley: :smiley: :smiley:

Voce mora no Brasil, cara? :smiley:

Isso na consultoria do Mágico de Oz, lá a Alice nunca meteu a mão na segurança. Na real, o gerente de projeto está mais preocupado em entregar um software com uma ‘cara bonitinha’ do que algo seguro, para o segundo, sempre podemos colocar um estagiario, afinal é uma dessas coisas bobas e tediosas que não podem usar do tempo dos analistas seniors (provavelmente pq esses sabem menos que os estagiarios).

Esqueci de uma coisa importante! Na consultoria do Oz, estagiario é tratado como gente e tem ate direitos!

Louds, vc nunca passou pela experiência de ser um estagiário?