Pergunta

Eu tenho um novo aplicativo sendo escrito no .NET. Eu também tenho uma versão herdada do aplicativo que deve ser mantida (enquanto isso), que foi gravada no VB6 e utiliza DLLs C ++. Certas DLLs nativas de C ++ devem continuar sendo utilizadas e compartilhadas pelo novo aplicativo .NET via P/Invoke.

Atualmente, o aplicativo Legacy utiliza um gerador de números aleatórios, que será substituído para usar a função CryptGenRandom () disponível nas APIs Win32. O novo aplicativo .NET tem a mesma necessidade e pode utilizar a classe RNGCryPToServiceProvider.

Pergunta:Sob o capô, a classe .NET rngCrypToServiceProvider utiliza a função Win32 CryptGenRandom ()? Nesse caso, eu estaria interessado em quaisquer links sobre a documentação disponível em relação a isso.

Foi útil?

Solução

Na verdade, o .NET RNGCryptoServiceProvider A classe obtém dados aleatórios de um "provedor de serviços criptográfico" (CSP) (assim diz a documentação). No CryptoAPI, um CSP é uma DLL carregável que fornece alguns serviços criptográficos, principalmente armazenamento de chaves privadas, cálculos de assinatura ... e também geração aleatória de números. Um CSP pode ser usado apenas se tiver sido assinado (pela Microsoft) e registrado (escrevendo em algumas chaves de registro específicas).

o CryptGenRandom() A função usa o CSP padrão (aquele registrado como ser usado por padrão, normalmente um dos CSP que acompanha o próprio sistema operacional) e invoca o CPGenRandom() função nesse csp. RNGCryptoServiceProvider faz o mesmo. Portanto, faz não ligar CryptGenRandom(), mas se alimenta da mesma fonte criptograficamente forte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top