Leggere in inglese

Condividi tramite


RNGCryptoServiceProvider Classe

Definizione

Attenzione

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

Implementa un generatore di numeri casuali (RNG) di crittografia mediante l'implementazione fornita dal provider del servizio di crittografia (CSP). La classe non può essere ereditata.

public sealed class RNGCryptoServiceProvider : System.Security.Cryptography.RandomNumberGenerator
[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
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RNGCryptoServiceProvider : System.Security.Cryptography.RandomNumberGenerator
Ereditarietà
RNGCryptoServiceProvider
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come creare un numero casuale con la RNGCryptoServiceProvider classe .

//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;
    }
}

Commenti

Importante

Il tipo implementa l'interfaccia IDisposable. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using in C# o Using in Visual Basic. Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable.

Costruttori

RNGCryptoServiceProvider()
Obsoleti.

Inizializza una nuova istanza della classe RNGCryptoServiceProvider.

RNGCryptoServiceProvider(Byte[])
Obsoleti.

Inizializza una nuova istanza della classe RNGCryptoServiceProvider.

RNGCryptoServiceProvider(CspParameters)
Obsoleti.

Inizializza una nuova istanza della classe RNGCryptoServiceProvider con i parametri specificati.

RNGCryptoServiceProvider(String)
Obsoleti.

Inizializza una nuova istanza della classe RNGCryptoServiceProvider.

Metodi

Dispose()
Obsoleti.

Quando ne viene eseguito l'override in una classe derivata, rilascia tutte le risorse usate dall'istanza corrente della classe RandomNumberGenerator.

(Ereditato da RandomNumberGenerator)
Dispose(Boolean)
Obsoleti.

Quando ne viene eseguito l'override in una classe derivata, libera le risorse non gestite usate da RandomNumberGenerator ed eventualmente di liberare le risorse gestite.

(Ereditato da RandomNumberGenerator)
Equals(Object)
Obsoleti.

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Finalize()
Obsoleti.

Rilascia le risorse usate dalla classe RNGCryptoServiceProvider.

GetBytes(Byte[])
Obsoleti.

Riempie una matrice di byte con una sequenza di valori casuali sicuri da un punto di vista crittografico.

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

Riempie la matrice di byte specificata con una sequenza casuale di valori crittograficamente avanzati a partire da un indice specificato per un numero di byte specificato.

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

Riempie la matrice di byte specificata con una sequenza di valori casuale e resistente dal punto di vista crittografico.

(Ereditato da RandomNumberGenerator)
GetBytes(Span<Byte>)
Obsoleti.

Riempie un intervallo con byte casuali crittograficamente avanzati.

GetBytes(Span<Byte>)
Obsoleti.

Riempie un intervallo con byte casuali crittograficamente avanzati.

(Ereditato da RandomNumberGenerator)
GetHashCode()
Obsoleti.

Funge da funzione hash predefinita.

(Ereditato da Object)
GetNonZeroBytes(Byte[])
Obsoleti.

Riempie una matrice di byte con una sequenza di valori casuali diversi da zero sicuri da un punto di vista crittografico.

GetNonZeroBytes(Span<Byte>)
Obsoleti.

Riempie un intervallo di byte con una sequenza casuale crittograficamente avanzata di valori diversi da zero.

GetNonZeroBytes(Span<Byte>)
Obsoleti.

Riempie un intervallo di byte con una sequenza casuale crittograficamente avanzata di valori diversi da zero.

(Ereditato da RandomNumberGenerator)
GetType()
Obsoleti.

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()
Obsoleti.

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()
Obsoleti.

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Prodotto Versioni (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

Thread safety

Questo tipo è thread-safe.

Vedi anche