Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

criptografando senhas em java

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial criptografando senhas em java

    Como todo mundo sabe, anotar senhas não é uma pratica recomendada por nenhum gerente de redes que se prese. 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

    Java suporta criptografia com e sem chaves. Basicamente, a diferença é que, quando não usamos chaves para encriptar uma mensagem, não podemos decriptá-la depois. Esse último método, na verdade, é criptografia, isso é o que chamamos de assinatura da mensagem ou hash, mas é o mais utilizado para armazenar senhas? depois de criptografada, você não deve precisar mais dela em texto puro? e por isso é o que utilizaremos nesse tutorial. A idéia é que a senha fornecida pelo usuário, na hora do logon, seja criptografada usando o mesmo algoritimo utilizado para gravar a senha no banco e aí a comparação é feita com as duas senhas encriptadas, ou, melhor dizendo, entre suas assinaturas.
    Prática

    Partindo pra prática, o negócio é bastante simples. O que você precisa fazer é só criar um digester com um algoritmo de criptografia específico e, em seguida, fazer o digest da senha.


    1. import java.security.MessageDigest;
    2. import java.security.NoSuchAlgorithmException;
    3.
    4. import sun.misc.BASE64Encoder;
    5.
    6. /**
    7. * @author jarbas
    8. */
    9. 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. }

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; /** * @author jarbas */ public class EncriptaSenha { public static String encripta (String senha) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(senha.getBytes()); BASE64Encoder encoder = new BASE64Encoder (); return encoder.encode (digest.digest ()); } catch (NoSuchAlgorithmException ns) { ns.printStackTrace (); return senha; } } }


    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 apareca 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


    espero que o tutorial seja útil.

  • Font Size
    #2
    Hi !
    Legal essa função nativa.
    Criptografia sempre é interessante.

    Abraços !

    Comment


    • Font Size
      #3
      Boa alternativa.

      Comment

      X
      Working...
      X