Existe um dispositivo ou executável no Windows que pode fornecer bytes aleatórios criptograficamente seguros via CMD ou Powershell?

Existe um dispositivo ou executável no Windows que pode fornecer bytes aleatórios criptograficamente seguros via CMD ou Powershell?

Essencialmente, estou procurando o equivalente do Windows /dev/urandomno Linux.

Eu sei que posso usar o Windows CNG por meio das APIs C++, mas não faço ideia se existe um método disponível (portátil) para acessar bytes aleatórios em qualquer sistema Windows moderno por meio da linha de comando.

Responder1

Qualquer coisa que você possa usar por meio do .NET (por exemplo, C#), também poderá usar por meio do PowerShell, e isso inclui oCriptografia.RandomNumberGeneratoraula. (No .NET Core 2.x, esta classe é implementada via CNGBCryptGenRandom()no Windows, OpenSSLRAND_bytes()no Linux, AppleCryptoCCRandomGenerateBytes()no macOS.)

$bytes = New-Object byte[](8)
$rng = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$rng.GetBytes($bytes)

(Código adaptado deCryptoGetRandom.ps1do "Script Center" da Microsoft. O script original usa a RNGCryptoServiceProviderclasse, que é quase a mesma coisa, mas não está disponível em versões antigas de tempo de execução do .NET 1.x.)

informação relacionada