英語で読む

次の方法で共有


RNGCryptoServiceProvider クラス

定義

注意事項

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

暗号化サービス プロバイダー (CSP : Cryptographic Service Provider) によって提供された実装を使用して、暗号乱数ジェネレーター (RNG : Random Number Generator) を実装します。 このクラスは継承できません。

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
継承
RNGCryptoServiceProvider
属性

次のコード例は、 クラスを使用して乱数を作成する方法を RNGCryptoServiceProvider 示しています。

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

注釈

重要

この型は IDisposable インターフェイスを実装します。 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。 直接的に型を破棄するには、try/catch ブロック内で Dispose メソッドを呼び出します。 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。

コンストラクター

RNGCryptoServiceProvider()
古い.

RNGCryptoServiceProvider クラスの新しいインスタンスを初期化します。

RNGCryptoServiceProvider(Byte[])
古い.

RNGCryptoServiceProvider クラスの新しいインスタンスを初期化します。

RNGCryptoServiceProvider(CspParameters)
古い.

指定したパラメーターを使用して、RNGCryptoServiceProvider クラスの新しいインスタンスを初期化します。

RNGCryptoServiceProvider(String)
古い.

RNGCryptoServiceProvider クラスの新しいインスタンスを初期化します。

メソッド

Dispose()
古い.

派生クラスでオーバーライドされると、RandomNumberGenerator クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

(継承元 RandomNumberGenerator)
Dispose(Boolean)
古い.

派生クラスでオーバーライドされると、RandomNumberGenerator によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

(継承元 RandomNumberGenerator)
Equals(Object)
古い.

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Finalize()
古い.

RNGCryptoServiceProvider クラスによって使用されていたリソースを解放します。

GetBytes(Byte[])
古い.

バイト配列に、暗号化に使用するランダムな値の厳密なシーケンスを設定します。

GetBytes(Byte[], Int32, Int32)
古い.

指定されたバイト配列に、指定されたインデックスから始めて、指定されたバイト数だけ、暗号強度の高いランダムな値のシーケンスを格納します。

GetBytes(Byte[], Int32, Int32)
古い.

指定したバイト配列に、暗号化に使用するランダムな値の厳密なシーケンスを設定します。

(継承元 RandomNumberGenerator)
GetBytes(Span<Byte>)
古い.

暗号強度の高いランダム バイトをスパンに格納します。

GetBytes(Span<Byte>)
古い.

暗号強度の高いランダム バイトをスパンに格納します。

(継承元 RandomNumberGenerator)
GetHashCode()
古い.

既定のハッシュ関数として機能します。

(継承元 Object)
GetNonZeroBytes(Byte[])
古い.

バイト配列に、暗号化に使用するランダムな 0 以外の値の厳密なシーケンスを設定します。

GetNonZeroBytes(Span<Byte>)
古い.

暗号強度の高い 0 以外の値のランダムなシーケンスをバイト スパンに格納します。

GetNonZeroBytes(Span<Byte>)
古い.

暗号強度の高い 0 以外の値のランダムなシーケンスをバイト スパンに格納します。

(継承元 RandomNumberGenerator)
GetType()
古い.

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()
古い.

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()
古い.

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

製品 バージョン (廃止)
.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

スレッド セーフ

この型はスレッド セーフです。

こちらもご覧ください