.Net RNGCryptoServiceProvider класс против функции Win32 CryptGenRandom () - PullRequest
2 голосов
/ 23 ноября 2010

У меня новое приложение пишется в .Net.У меня также есть устаревшая версия приложения, которая должна поддерживаться (пока), которая была написана на VB6 и использует библиотеки C ++ DLL.Некоторые собственные C ++ библиотеки DLL должны по-прежнему использоваться и совместно использоваться новым приложением .Net через P / Invoke.

Устаревшее приложение в настоящее время использует генератор случайных чисел, который будет заменен на функцию CryptGenRandom (), доступную черезWin32 API.Новое приложение .Net имеет такую ​​же потребность и может использовать класс RNGCryptoServiceProvider.

Вопрос: Под капотом .Net RNGCryptoServiceProvider используется функция Win32 CryptGenRandom ()?Если это так, меня могут заинтересовать любые ссылки на имеющуюся документацию по этому вопросу.

1 Ответ

2 голосов
/ 25 ноября 2010

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

Функция CryptGenRandom() использует CSP по умолчанию (зарегистрированный для использования по умолчанию, обычно один из CSP, поставляемый с самой операционной системой) и вызывает функцию CPGenRandom() на этом CSP. RNGCryptoServiceProvider делает то же самое. Следовательно, он не вызывает CryptGenRandom(), но питается тем же криптографически сильным источником.

...