Cómo integrar el algoritmo totp para la verificación otp en mi aplicación de primavera

  • Genere una clave, K, que es una cadena de bytes arbitraria, y compártala de forma segura con el cliente.
  • Acuerde un T0, el tiempo de Unix para comenzar a contar los pasos de tiempo, y un intervalo, TI, que se utilizará para calcular el valor del contador C (los valores predeterminados son la época de Unix como T0 y 30 segundos como TI)
  • Acuerde un método hash criptográfico (el valor predeterminado es SHA-1)
  • Acuerde la longitud del token, N (el valor predeterminado es 6)

Una vez acordados los parámetros, la generación de tokens es la siguiente:

  1. Calcule C como el número de veces que TI ha transcurrido después de T0.
  2. Calcule el hash HMAC H con C como mensaje y K como clave (el algoritmo HMAC se define en la sección anterior, pero también la mayoría de las bibliotecas criptográficas lo admiten). K debe pasarse como está, C debe pasarse como un entero sin signo de 64 bits sin procesar.
  3. Tome los menos 4 bits significativos de H y úselo como compensación, O.
  4. Tome 4 bytes de H comenzando en O bytes MSB, descarte el bit más significativo y almacene el resto como un entero (sin signo) de 32 bits, I.
  5. El token son los N dígitos más bajos de I en la base 10. Si el resultado tiene menos dígitos que N, rellene con ceros desde la izquierda.

Tanto el servidor como el cliente calculan el token, luego el servidor verifica si el token suministrado por el cliente coincide con el token generado localmente. Algunos servidores permiten códigos que deberían haberse generado antes o después de la hora actual para dar cuenta de ligeros sesgos de reloj, latencia de red y retrasos de los usuarios.

Fuente: Wikipedia

¿Viste esta url?

jghiloni / BooTOTP