RNGCryptoServiceProvider Clase

Definición

Precaución

RNGCryptoServiceProvider is obsolete. To generate a random number, use one of the RandomNumberGenerator static methods instead.

Implementa un generador de números aleatorios (RNG) criptográfico mediante la implementación proporcionada por el proveedor de servicios criptográficos (CSP). Esta clase no puede heredarse.

C#
public sealed class RNGCryptoServiceProvider : System.Security.Cryptography.RandomNumberGenerator
C#
[System.Obsolete("RNGCryptoServiceProvider is obsolete. To generate a random number, use one of the RandomNumberGenerator static methods instead.", DiagnosticId="SYSLIB0023", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class RNGCryptoServiceProvider : System.Security.Cryptography.RandomNumberGenerator
C#
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RNGCryptoServiceProvider : System.Security.Cryptography.RandomNumberGenerator
Herencia
RNGCryptoServiceProvider
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un número aleatorio con la RNGCryptoServiceProvider clase .

C#
//The following sample uses the Cryptography class to simulate the roll of a dice.

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

class RNGCSP
{
    private static RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
    // Main method.
    public static void Main()
    {
        const int totalRolls = 25000;
        int[] results = new int[6];

        // Roll the dice 25000 times and display
        // the results to the console.
        for (int x = 0; x < totalRolls; x++)
        {
            byte roll = RollDice((byte)results.Length);
            results[roll - 1]++;
        }
        for (int i = 0; i < results.Length; ++i)
        {
            Console.WriteLine("{0}: {1} ({2:p1})", i + 1, results[i], (double)results[i] / (double)totalRolls);
        }
        rngCsp.Dispose();
    }

    // This method simulates a roll of the dice. The input parameter is the
    // number of sides of the dice.

    public static byte RollDice(byte numberSides)
    {
        if (numberSides <= 0)
            throw new ArgumentOutOfRangeException("numberSides");

        // Create a byte array to hold the random value.
        byte[] randomNumber = new byte[1];
        do
        {
            // Fill the array with a random value.
            rngCsp.GetBytes(randomNumber);
        }
        while (!IsFairRoll(randomNumber[0], numberSides));
        // Return the random number mod the number
        // of sides.  The possible values are zero-
        // based, so we add one.
        return (byte)((randomNumber[0] % numberSides) + 1);
    }

    private static bool IsFairRoll(byte roll, byte numSides)
    {
        // There are MaxValue / numSides full sets of numbers that can come up
        // in a single byte.  For instance, if we have a 6 sided die, there are
        // 42 full sets of 1-6 that come up.  The 43rd set is incomplete.
        int fullSetsOfValues = Byte.MaxValue / numSides;

        // If the roll is within this range of fair values, then we let it continue.
        // In the 6 sided die case, a roll between 0 and 251 is allowed.  (We use
        // < rather than <= since the = portion allows through an extra 0 value).
        // 252 through 255 would provide an extra 0, 1, 2, 3 so they are not fair
        // to use.
        return roll < numSides * fullSetsOfValues;
    }
}

Comentarios

Importante

Este tipo implementa la interfaz IDisposable. Cuando haya terminado de utilizar el tipo, debe desecharlo directa o indirectamente. Para eliminar el tipo directamente, llame a su método Dispose en un bloque try/catch. Para deshacerse de él indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para más información, vea la sección "Uso de objetos que implementan IDisposable" en el tema de la interfaz IDisposable.

Constructores

RNGCryptoServiceProvider()
Obsoletos.

Inicializa una nueva instancia de la clase RNGCryptoServiceProvider.

RNGCryptoServiceProvider(Byte[])
Obsoletos.

Inicializa una nueva instancia de la clase RNGCryptoServiceProvider.

RNGCryptoServiceProvider(CspParameters)
Obsoletos.

Inicializa una nueva instancia de la clase RNGCryptoServiceProvider con los parámetros especificados.

RNGCryptoServiceProvider(String)
Obsoletos.

Inicializa una nueva instancia de la clase RNGCryptoServiceProvider.

Métodos

Dispose()
Obsoletos.

Cuando se reemplaza en una clase derivada, libera todos los recursos usados por la instancia actual de la clase RandomNumberGenerator.

(Heredado de RandomNumberGenerator)
Dispose(Boolean)
Obsoletos.

Cuando se reemplaza en una clase derivada, libera los recursos no administrados usados por RandomNumberGenerator y, de forma opcional, libera los recursos administrados.

(Heredado de RandomNumberGenerator)
Equals(Object)
Obsoletos.

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Finalize()
Obsoletos.

Libera los recursos que usa la clase RNGCryptoServiceProvider.

GetBytes(Byte[])
Obsoletos.

Rellena una matriz de bytes con una secuencia aleatoria de valores sólidamente cifrada.

GetBytes(Byte[], Int32, Int32)
Obsoletos.

Rellena la matriz de bytes especificada con una secuencia aleatoria de valores criptográficamente segura a partir de un índice especificado y para un número de bytes especificado.

GetBytes(Byte[], Int32, Int32)
Obsoletos.

Rellena la matriz de bytes especificada con una secuencia aleatoria de valores sólidamente cifrada.

(Heredado de RandomNumberGenerator)
GetBytes(Span<Byte>)
Obsoletos.

Rellena un intervalo con bytes aleatorios criptográficamente seguros.

GetBytes(Span<Byte>)
Obsoletos.

Rellena un intervalo con bytes aleatorios criptográficamente seguros.

(Heredado de RandomNumberGenerator)
GetHashCode()
Obsoletos.

Sirve como la función hash predeterminada.

(Heredado de Object)
GetNonZeroBytes(Byte[])
Obsoletos.

Rellena una matriz de bytes con una secuencia aleatoria de valores distintos de cero sólidamente cifrada.

GetNonZeroBytes(Span<Byte>)
Obsoletos.

Rellena un intervalo de bytes con una secuencia aleatoria criptográficamente segura de valores distintos de cero.

GetNonZeroBytes(Span<Byte>)
Obsoletos.

Rellena un intervalo de bytes con una secuencia aleatoria criptográficamente segura de valores distintos de cero.

(Heredado de RandomNumberGenerator)
GetType()
Obsoletos.

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()
Obsoletos.

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()
Obsoletos.

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Producto Versiones (Obsoleto)
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5 (6, 7, 8, 9)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Seguridad para subprocesos

Este tipo es seguro para la ejecución de subprocesos.

Consulte también