He agregado mi respuesta aquí porque siento que las existentes no responden directamente a tu pregunta lo suficiente para mi gusto.
Veamos RFC 4868 (en relación con IPSec, sin embargo, cubre la función HMAC-SHA256 que pretende para usar - em mine ):
Tamaño del bloque: el tamaño del bloque de datos del algoritmo hash subyacente
opera sobre Para SHA-256, esto es 512 bits , para SHA-384 y
SHA-512, esto es 1024 bits.
Longitud de salida: el tamaño del valor de hash producido por el
subyacente
algoritmo hash. Para SHA-256, esto es de 256 bits , para SHA-384 este
es de 384 bits, y para SHA-512, esto es de 512 bits.
Como notas de WhiteWinterWolf , se desaconseja más que B porque el valor se debe marcar utilizando SHA-256 primero ( es decir, 512 bits en este caso) y menos de L no se recomienda (256 bits en este caso). Sin embargo, una clave de 256 bits es una exageración, ya que cualquier cosa que sea de 128 bits o más no puede ser forzada brutalmente en la vida actual de nadie, incluso si todas las computadoras del mundo estuvieran trabajando para descifrarla.
Por lo tanto, recomendaría una clave de 128 bits, generada con un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG). Si desea almacenar esto como texto, se puede representar una clave de 128 bits generando una cadena hexadecimal de longitud de 32 caracteres al azar, o alternativamente, podría generar 16 bytes aleatorios y luego ejecutarlos a través de una función base64.