Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

RNGCryptoServiceProvider-Klasse

 

Veröffentlicht: Oktober 2016

Implementiert einen kryptografischen Zufallszahlen-Generator (Random Number Generator, RNG) unter Verwendung der Implementierung, die der Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) bereitstellt. Diese Klasse kann nicht vererbt werden.

Namespace:   System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Security.Cryptography.RandomNumberGenerator
    System.Security.Cryptography.RNGCryptoServiceProvider

[ComVisibleAttribute(true)]
public sealed class RNGCryptoServiceProvider : RandomNumberGenerator

NameBeschreibung
System_CAPS_pubmethodRNGCryptoServiceProvider()

Initialisiert eine neue Instanz der RNGCryptoServiceProvider-Klasse.

System_CAPS_pubmethodRNGCryptoServiceProvider(Byte[])

Initialisiert eine neue Instanz der RNGCryptoServiceProvider-Klasse.

System_CAPS_pubmethodRNGCryptoServiceProvider(CspParameters)

Initialisiert eine neue Instanz der RNGCryptoServiceProvider-Klasse mit den angegebenen Parametern.

System_CAPS_pubmethodRNGCryptoServiceProvider(String)

Initialisiert eine neue Instanz der RNGCryptoServiceProvider-Klasse.

NameBeschreibung
System_CAPS_pubmethodDispose()

Gibt beim Überschreiben in einer abgeleiteten Klasse alle Ressourcen frei, die von der aktuellen Instanz der RandomNumberGenerator-Klasse verwendet werden.(Geerbt von „RandomNumberGenerator“.)

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_pubmethodGetBytes(Byte[])

Füllt ein Bytearray mit einer kryptografisch starken Folge von zufälligen Werten aus.(Überschreibt RandomNumberGenerator.GetBytes(Byte[]).)

System_CAPS_pubmethodGetBytes(Byte[], Int32, Int32)

Füllt das angegebene Bytearray mit einer kryptografisch starken Folge zufälliger Werte aus.(Geerbt von „RandomNumberGenerator“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetNonZeroBytes(Byte[])

Füllt ein Bytearray mit einer kryptografisch starken Folge von zufälligen Werten aus, die ungleich 0 (null) sind.(Überschreibt RandomNumberGenerator.GetNonZeroBytes(Byte[]).)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

System_CAPS_importantWichtig

Dieser Typ implementiert die IDisposable Schnittstelle. Wenn Sie mit dem Datentyp haben, sollten Sie es entweder direkt oder indirekt freigeben. Damit des Typs direkt freigegeben werden, rufen Sie seine Dispose -Methode in eine try/catch Block. Verwenden, um es indirekt freigegeben werden, z. B. ein Sprachkonstrukt using (in c#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, die implementiert IDisposable" in der IDisposable Thema zur Schnittstelle.

Im folgenden Codebeispiel veranschaulicht das Erstellen einer Zufallszahl mit der RNGCryptoServiceProvider Klasse.

//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();
        Console.ReadLine();
    }

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

.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0

Dieser Typ ist threadsicher.

Zurück zum Anfang
Anzeigen: