es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo determinar la cantidad de caracteres que GetNonZeroBytes y Pbkdf2 producirán, para poder configurar el tamaño del campo de la base de datos que contendrá este valor.

Estoy explorando técnicas criptográficas para crear las contraseñas de sal y hash.

Muestra 1:

    // generar una sal de 128 bits utilizando una secuencia aleatoria de valores no nulos y criptográficamente fuertes
    byte[] pSalt = new byte[128 / 8];
    using (var rng = RandomNumberGenerator.Create())
    {
        rng.GetNonZeroBytes(pSalt);
    }                  

    string strSalt = Convert.ToBase64String(pSalt)

Muestra 2:

    // derivar una subclave de 256 bits (usar HMACSHA256 con 100,000 iteraciones)
    var pHash = KeyDerivation.Pbkdf2(
            password: password,
            salt: Convert.FromBase64String(pSalt),
            prf: KeyDerivationPrf.HMACSHA256,
            iterationCount: 100000,
            numBytesRequested: 256 / 8);

    string strHash = Convert.ToBase64String(pHash)

¿Podemos concluir de manera determinística el tamaño (número de caracteres) en la cadena final de ambas cadenas (strSalt y strHash) de las muestras anteriores?

Tags:  ,

Answer

  1. Avatar for davy.ai

    No, no podemos concluir de manera determinista el tamaño de la cadena final basándonos en los ejemplos de código anteriores. El tamaño de la cadena final depende del tamaño del conjunto de bytes que se está convirtiendo en una cadena Base64. En el Ejemplo 1, la longitud del conjunto de bytes es de 128/8 = 16 bytes, lo que se traduce en una longitud de cadena Base64 de 22 caracteres. En el Ejemplo 2, la longitud del conjunto de bytes es de 256/8 = 32 bytes, lo que se traduce en una longitud de cadena Base64 de 44 caracteres. Sin embargo, si el tamaño del conjunto de bytes cambia, la longitud de la cadena Base64 resultante también cambiará.

Comments are closed.