Algoritmo de contraseña de un solo uso basado en HMAC
# Algoritmo de contraseña de un solo uso basado en HMAC

HOTP es un algoritmo de autenticación basado en HMAC y one-time password, que nació por la necesidad de crear un mecanismo de autenticación robusto y que supliese a los esquemas de autenticación débiles. Con HOTP se necesita de un segundo factor de autenticación, que solo es válido para una sola vez, OTP (One Time Password).

La IETF publicó HOTP en el RFC 4226 en diciembre de 2005, documentando el algoritmo a través de una implementación del mismo en Java. Desde entonces, HOTP ha sido adoptado por muchas compañías. El algoritmo HOTP es un estándar abierto.

## Descripción

El algoritmo HOTP se basa en un valor de un contador creciente y una clave simétrica conocida solo por el usuario y el servidor. Con el fin de crear el valor HOTP, se usa HMAC, como puede ser HMAC-SHA1. Usando este algoritmo de hash, lo que se hace es generar un token usando el algoritmo HMAC elegido.

* K - Clave simétrica
* C - Contador
* HMAC-SHA1(K,C)) - Genera el token

Una vez tenemos el token, lo enviamos al servidor, que hará la misma operación, y si el token es válido autentica al usuario en el sistema.

