Cuando yo programaba en pascal, mi encriptaciĆ³n favorita era invirtiendo los bits... pero cualquiera tambiĆ©n puede invertir los bits y listo.
Pero ya gente experta logrĆ³ algoritmos de encriptaciĆ³n populares. Los mĆ”s conocidos: MD5 y SHA.
En este post hablaremos cĆ³mo encriptar texto, sobretodo las contraseƱas, utilizando MD5 o SHA.
La historia de la criptografĆa es bastante larga e interesante, pero para nuestro dĆa a dĆa, solo necesitamos cĆ³mo utilizar las bibliotecas existentes en el mercado.
Hace un tiempo, hice un post de ello (MD5 en Java) que consistĆa en utilizar el mismo API de Java para generar MD5.Pero ahora mostrarĆ© una biblioteca muy Ćŗtil proporcionada por la fundaciĆ³n ASF.
COMMONS CODEC
Podemos descargar su biblioteca desde aquĆ http://commons.apache.org/codec/download_codec.cgiDescomprimimos el archivo y tomamos el .jar llamado
commons-codec-1.5.jar
y lo agregamos al proyecto. En NetBeans solo le damos clic derecho en Libraries
del Proyecto y seleccionamos el .jar.La clase
DigestUtils
es nuestra clase principal para utilizar los diferentes algoritmos de encriptaciĆ³n.MD5
String texto="Saludos desde Apuntesdejava.com";
String encriptMD5=DigestUtils.md5Hex(texto);
System.out.println("md5:"+encriptMD5);
La salida resultante es:md5:e5adf3f9fe476c7816eacd3873f5b51f
Para comprobarlo, yo utilizo la consola de MySQL
SHA-HEX
Similar al MD5, solo es otro mƩtodo String texto="Saludos desde Apuntesdejava.com";
String encript=DigestUtils.shaHex(texto);
System.out.println("shaHex:"+encript);
La salida resultante es:shaHex:2b05363b154309d7fc069cd922f316fa3f3ff866
Y en MySQL:SHA-256 / 512
Para el SHA 256 se utiliza el mƩtodoDigestUtils.sha256
, y para 512, se utiliza DigestUtils.sha512
. Los resultados son como siguen:sha-256:9a4557a0f654365312b430b80f0da46be2c3a9db6a083f545145398fc66c92d8
sha-512:4c0a2187e03531011c7787752b66e8848a5f146e8aa08e5b5615030c5daa9cd756150e225943b5182de2434d925a4d6889b2d129ed87f23943bce9a8342b02bd
Como podemos ver.. a mayor bits, mayor confiabilidad.Su contraparte, en MySQL, se utiliza la funciĆ³n sha2(). Ojo, esta funciĆ³n reciĆ©n estĆ” disponible en la versiĆ³n 5.5.5.