Pregunta Generación de Hashes usando .NET Core


Necesito generar hashes aleatorios únicos para usar en enlaces de restablecimiento de contraseña en .Net Core. En ASP.NET Identity, encontré esto útil, me pregunto si RNGCryptoServiceProvider Todavía asegura la aleatoriedad de los hashes generados.

 using (RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider())
            {
                var data = new byte[4];
                for (int i = 0; i < 10; i++)
                {
                    //filled with an array of random numbers
                    rngCsp.GetBytes(data);
                    //this is converted into a character from A to Z
                    var randomchar = Convert.ToChar(
                        //produce a random number 
                        //between 0 and 25
                        BitConverter.ToUInt32(data, 0) % 26
                        //Convert.ToInt32('A')==65
                                              + 65
                    );
                    token.Append(randomchar);
                }
            }

¿Cuál es la mejor manera de lograr eso usando .net core y usando qué clases?


5
2017-10-28 16:50


origen


Respuestas:


RNGCryptoServiceProvider no está en .NET Core. Utilizar RandomNumberGenerator.Create() para obtener una instancia de un CSPRNG que funcionará en la plataforma correcta. Su API es la misma que RNGCryptoServiceProvider, excepto eso GetNonZeroBytes falta (que yo diría que ni siquiera debería haber estado allí).

En Windows, esto se reducirá a BCryptGenRandom en GNC, y en Linux usará OpenSSL.


8
2017-10-28 16:56