Cómo generar un hash SHA1 a partir de una cadena en Java

El hash SHA1 se puede generar usando DigestUtils de Apache commons.

Sintaxis:

	sha1 = org.apache.commons.codec.digest.DigestUtils.sha1Hex( value );

El hash SHA1 también se puede generar directamente usando la clase MessageDigest del jdk:

Sintaxis:

	MessageDigest digest = MessageDigest.getInstance("SHA-1");
	digest.reset();
	digest.update(value.getBytes("utf8"));
	sha1 = String.format("%040x", new BigInteger(1, digest.digest()));

Aquí hay un ejemplo que crea el sha1 de la cadena "esto es una prueba". Primero se usa el método usando la clase MessageDigest del jdk. Luego utiliza la clase DigestUtils de Apache commons. Los sha1 generados se escriben en la consola.

1- Crea el siguiente archivo java:

import java.math.BigInteger;
import java.security.MessageDigest;

public class SHA1 {

	public static void main(String[] argv){

		String value = "this is a test";

		String sha1 = "";
		
		// With the java libraries
		try {
			MessageDigest digest = MessageDigest.getInstance("SHA-1");
	        digest.reset();
	        digest.update(value.getBytes("utf8"));
	        sha1 = String.format("%040x", new BigInteger(1, digest.digest()));
		} catch (Exception e){
			e.printStackTrace();
		}

		System.out.println( "The sha1 of \""+ value + "\" is:");
		System.out.println( sha1 );
		System.out.println();

		// With Apache commons
		sha1 = org.apache.commons.codec.digest.DigestUtils.sha1Hex( value );

		System.out.println( "The sha1 of \""+ value + "\" is:");
		System.out.println( sha1 );

     }
}

El resultado será:

The sha1 of "this is a test" is:
fa26be19de6bff93f70bc2308434e4a440bbad02

The sha1 of "this is a test" is:
fa26be19de6bff93f70bc2308434e4a440bbad02

Referencias

Java 8
Online tool generating SHA1
SHA1 Decoder

Comentarios Recientes