Tenemos una API REST que se comunica con un front-end móvil. Después de enviar una contraseña de un solo uso, el backend emitirá un token (cadena UUID v4 aleatoria) para que la aplicación móvil la use como autenticación en las solicitudes posteriores. El servidor almacenará una versión con hash de este token en la base de datos con el usuario.
Queremos asegurarnos de que autenticar el token lleve el menor tiempo posible.
PREGUNTA
¿Qué tipo de hashing / encriptación es suficiente para almacenar los tokens en la base de datos? ¿Es un hash rápido como SHA256 lo suficientemente bueno, o deberíamos usar un hash lento como bcrypt? Si utilizamos SHA256, ¿debemos incluir un salt, ya que el token original no copiado es solo un UUID de 16 bytes al azar?