C# RNGCryptoServiceProvider GetBytes(большой байтовый массив) против зацикливания GetBytes(1 байт)

Мне было интересно, есть ли разница в безопасности между следующим:

СЛУЧАЙ А:

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

ДЕЛО Б:

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).

Спасибо за ваше время

1 ответ

Решение

Нет, нет Байты генерируются одинаково независимо от того, как вы их получаете.

Другие вопросы по тегам