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 ответ
Решение
Нет, нет Байты генерируются одинаково независимо от того, как вы их получаете.