На самом деле, класс .Net RNGCryptoServiceProvider
получает случайные данные от «поставщика криптографических услуг» (CSP) (так говорится в документации ). В CryptoAPI CSP - это загружаемая DLL, которая предоставляет некоторые криптографические сервисы, главным образом, хранение секретных ключей, вычисления сигнатур ... а также генерацию случайных чисел. CSP может использоваться только в том случае, если он был подписан (Microsoft) и зарегистрирован (путем записи в некоторые конкретные разделы реестра).
Функция CryptGenRandom()
использует CSP по умолчанию (зарегистрированный для использования по умолчанию, обычно один из CSP, поставляемый с самой операционной системой) и вызывает функцию CPGenRandom()
на этом CSP. RNGCryptoServiceProvider
делает то же самое. Следовательно, он не вызывает CryptGenRandom()
, но питается тем же криптографически сильным источником.