Java: Calculando un HMAC

Un pequeño ejemplo para calcular un HMAC (hash-based message authentication code):

import java.util.Formatter;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class TestHMAC {
	private static String toHex(final byte[] bytes) {
		final StringBuilder sb = new StringBuilder(bytes.length << 1);
		final Formatter formatter = new Formatter(sb);
		for (final byte b : bytes) {
			formatter.format("%02x", b);
		}
		return sb.toString();
	}

	public static String doHash(final String str, final String passphrase)
			throws NoSuchAlgorithmException, InvalidKeyException,
			UnsupportedEncodingException {
		final Mac hmac = Mac.getInstance("HmacSHA256");
		hmac.init(new SecretKeySpec(passphrase.getBytes("UTF-8"), "HmacSHA256"));
		return toHex(hmac.doFinal(str.getBytes("UTF-8")));
	}

	public static void main(String[] args) throws Exception {
		System.out.println("hash: " + doHash("Loren ipsum", "changeit"));
	}
}

Referencias:
Java JCA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: