
Guardar senhas em texto puro
não deve ser uma prática seguida
Como todo mundo sabe, anotar senhas não é uma pratica recomendada por nenhum gerente de redes que se preze. Sendo assim, guardar senhas em texto puro não deve ser uma prática seguida por nenhum programador ou analista de respeito.
Partindo desse principio, quero mostrar nesse tutorial, como fazer um digest em uma senha antes de armazená-la em um repositório qualquer.
Conceitos
algoritmo utilizado para gravar a senha no banco e aí a comparação é feita com as duas senhas encriptadas, ou, melhor dizendo, entre suas assinaturas.
Partindo pra prática, o negócio é bastante simples.
O que você precisa fazer é só criar um digester com um algoritmo
01 import java.security.MessageDigest;
02 import java.security.NoSuchAlgorithmException;
03
04 import sun.misc.BASE64Encoder;
05
06 /**
07 * @author
08 */
09 public class EncriptaSenha {
10
11 public static String encripta (String senha) {
12 try {
13 MessageDigest digest = MessageDigest.getInstance(“MD5”);
14 digest.update(senha.getBytes());
15 BASE64Encoder encoder = new BASE64Encoder ();
16 return encoder.encode (digest.digest ());
17 } catch (NoSuchAlgorithmException ns) {
18 ns.printStackTrace ();
19 return senha;
20 }
21 }
22 }
_______________________________________________
Aí está o nosso encriptador. Agora vamos explicar o método.
Na linha 13, nós criamos o digester com o algoritmo MD5. Além desse, Java suporta ainda MD2, SHA, SHA-1, SHA-256, SHA-384 e SHA-512. Fique a vontade para experimentá-los.
Na linha seguinte, o método update adiciona bytes a mensagem a ser criptografada. Em seguida, criamos um encoder para impedir que a senha encriptada apareça com caracteres que costumam causar problemas em xml e alguns bancos de dados.
Por último, o método digest.digest () retorna a mensagem encriptada e o método encoder.encode () substitui os caracteres problemáticos.
Pronto, agora você já deve saber como guardar uma senha de uma forma mais segura, como ensinam os nossos professores.
Para saber mais sobre criptografia em Java, você pode dar uma olhada na documentação oficial da SUN em http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html.
Autor : Jarbas Jocênio F. de Lima