Criptografia básica em Java

Criptografia é algo muito comum nos sistemas atuais. Quando falamos de segurança, o termo criptografia normalmente está presente.

Este post tem como objetivo apresentar a API de criptografia já presente na liguagem java, mais precisamente no pacote java.security.

Existem basicamente dois tipos de algoritmos de criptografia:

  • Os de duas vias (aquele em que é possível descriptografar)
  • Os de uma via (os que não há como descriptografar, pois o o cálculo matemático efetuado não permite, a partir do valor fim, retornar ao valor inicial).

Os algoritmos de uma via podem ser chamados de Message Digests, e são extremamente eficientes para armazenamento de senhas – e são estas funções que veremos neste post.

Message Digest

A API do Java implementa dois algoritmos de Message Digest:

Em java, temos uma classe MessageDigest que implementa estes algoritmos. Para termos uma instância desta classe, devemos proceder da seguinte forma:

//message digest para MD5
MessageDigest md = MessageDigest.getInstance("MD5");

//message digest para SHA
MessageDigest md = MessageDigest.getInstance("SHA-1");

Após selecionar o algoritmo desejado (passando através do método getInstance), podemos proceder da seguinte forma para criptografar uma String:

String s = "senha aqui";
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update( s.getBytes() );
byte[] hash = md.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
     if ((0xff & hash[i]) < 0x10)
          hexString.append( "0" + Integer.toHexString((0xFF & hash[i])));
     else
	  hexString.append(Integer.toHexString(0xFF & hash[i]));
}
String criptografado = hexString.toString();

Claro que devemos tratar devidamente as exceções (como por exemplo NoSuchAlgorithmException), mas no grosso é o código acima mesmo:

O método update() recebe o que deve ser critografado (em array de bytes) e o método digest() efetua a criptografia, retornando um array de bytes.

O for percorre os bytes e vai pegando os seus valores e convertendo para String – concatenando os valores com a classe StringBuilder.

Bom, finalizo aqui um exemplo básico de criptografia com MessageDigest.

 

Quanto a criptografia de duas vias, tem um ótimo post no Blog do Ricardo Giaviti. Segue abaixo o link:

http://www.ricardogiaviti.com.br/2010/07/usando-criptografia-em-java/

Espero ter ajudado!

Abraço

Deixe um Comentário

0 Comentários.

Deixe um Comentário


NOTA - Você pode usar estesHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>