Cryptografy ? Um novo pacote Java de Criptografia

Olá pessoal!!

Acabei de disponibilizar o pacote Cryptografy, para fazer criptografias de forma mais fácil.

Com esse pacote, o uso de várias criptografias diferentes em java se torna banal. Vejam um exemplo:

SymmetricCryptFactory factory = SymmetricCryptFactory.getInstance();
//Encrypt
SymmetricCrypter pbeWithMd5AndDes = factory.getCryptografy(SymmetricAlgorithm.PBEWithMD5AndDES);
pbeWithMd5AndDes.generateKey();
String encrypted = pbeWithMd5AndDes.encrypt("input");
byte[] key = pbeWithMd5AndDes.getSerializedKey();

//Decrypt
SymmetricCrypter anotherPbeWithMd5AndDes = factory.getCryptografy(SymmetricAlgorithm.PBEWithMD5AndDES, key);
String decryptedAgain = anotherPbeWithMd5AndDes.decrypt(encrypted);

Caso queiram dar uma olhada com mais detalhes, leiam o post que fiz no meu blog.

Legal cara!
Dei uma olhadinha meio rápida e parece ser bem fácil.

Assim que sobrar um tempinho eu vou ver melhor.
Posso fazer um post no meu blog utilizando tua classe? Com as merecidas referências é claro… hehehe

[quote=barenko]Olá pessoal!!

Acabei de disponibilizar o pacote Cryptografy, para fazer criptografias de forma mais fácil.

Com esse pacote, o uso de várias criptografias diferentes em java se torna banal. Vejam um exemplo:

SymmetricCryptFactory factory = SymmetricCryptFactory.getInstance();
//Encrypt
SymmetricCrypter pbeWithMd5AndDes = factory.getCryptografy(SymmetricAlgorithm.PBEWithMD5AndDES);
pbeWithMd5AndDes.generateKey();
String encrypted = pbeWithMd5AndDes.encrypt("input");
byte[] key = pbeWithMd5AndDes.getSerializedKey();

//Decrypt
SymmetricCrypter anotherPbeWithMd5AndDes = factory.getCryptografy(SymmetricAlgorithm.PBEWithMD5AndDES, key);
String decryptedAgain = anotherPbeWithMd5AndDes.decrypt(encrypted);

Caso queiram dar uma olhada com mais detalhes, leiam o post que fiz no meu blog.[/quote]
Bacana! muito legal bem curto!
"Da qui uns 2 anos vem meu método de criptográfia "rs

vlw

Opa, claro q pode fazer o post! Seria de grande ajuda, afinal, qto mais gente testando, mais feedback recebo e melhor o projeto pode ficar!

[quote=barenko][quote=fesaab]
Posso fazer um post no meu blog utilizando tua classe? Com as merecidas referências é claro… hehehe
[/quote]

Opa, claro q pode citar![/quote]
opa tbm quero!rsrs

e como faz para setar uma senha?

Assim, quando eu criei, pensei em simplificar o uso do cipher pela JDK.

Não conheço a fundo a teoria sobre o funcionamento do cipher. Mas pelo que eu vi em todos os exemplos de implementação que estudei para fazer o Criptografy, a própria utilização do cipher prevê que a chave sempre será gerada por um KeyGenerator e essa chave gerada deve ser armazenada em algum lugar seguro (possivelmente um arquivo, por isso sua converção para bytes) para utlilização posterior.

É provavel que vocë tenha que utilizar outra abordagem caso queira que o usuário utilize a chave como se fosse uma ‘senha’ de acesso.

Seria interessante se alguém que conheça o Cipher mais a fundo pudesse nos informar sobre isso.

Aqui está um exemplo de uso mais ‘purista’ do cipher, sem o encapsulamento que o Cryptografy proporciona: http://www.java-tips.org/java-se-tips/javax.crypto/encryption-and-decryption-using-symmetric-2.html

Espero ter ajudado, qualquer coisa é só falar!

mas e se eu quiser usar para armazenar usuários/senha em um db…
vou querer encriptar a senha do cara, e é meio… tosco… salvar a chave junto…

queria conseguir sempre usar a mesma, ou existe alguma outra lógica boa pra salvar user/senha no banco?

obrigado

A lógica é “nunca salvar a senha” e sim um hash dessa senha.

Engraçado, o código final não pareceu muito mais simples que usando as classes do Java diretamente. Já deu uma olhada entre os membros da The Legion of Bounce Castle?