1

次のセキュリティに違いがあるかどうか疑問に思っていました。

ケース A:

byte[] data = new byte[47];
using(RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
{
    crypto.GetBytes(data);
}

ケース B:

byte[] data = new byte[47];
using(RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
{
    for(int i = 0; i < 47; i++)
    {
        byte[] byte = new byte[1];
        crypto.GetBytes(byte);
        data[i] = byte;       
    }
}

MSDNの例に触発されたので、疑問に思っていました。これは基本的に、限られた値でモジュロを使用することの不公平な分布のために、受信したバイトが公平であったかどうかをチェックします。(私はランダム文字列ジェネレーターを構築していましたが、アルファベットの初期の文字に不公平な分布の利点を与えたくありません)

したがって、基本的に私の質問は、「GetBytes」をループして N バイトを取得するか (ケース b)、「GetBytes」を直接使用して N バイトを取得するか (ケース a) で、セキュリティに違いがあるかどうかです。

お時間をいただきありがとうございます

4

1 に答える 1