¿Existe algún dispositivo o ejecutable en Windows que pueda proporcionar bytes aleatorios criptográficamente seguros a través de CMD o Powershell?

¿Existe algún dispositivo o ejecutable en Windows que pueda proporcionar bytes aleatorios criptográficamente seguros a través de CMD o Powershell?

Básicamente, estoy buscando el equivalente de Windows /dev/urandoma Linux.

Sé que puedo usar Windows CNG a través de las API de C++, pero no tengo idea si hay un método disponible (portátil) para acceder a bytes aleatorios en cualquier sistema Windows moderno a través de la línea de comandos.

Respuesta1

Cualquier cosa que pueda usar a través de .NET (por ejemplo, C#) también puede usar a través de PowerShell, y esto incluyeCriptografía.RandomNumberGeneratorclase. (En .NET Core 2.x, esta clase se implementa mediante CNGBCryptGenRandom()en Windows, OpenSSLRAND_bytes()en Linux, AppleCryptoCCRandomGenerateBytes()en MacOS.)

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

(Código adaptado deCriptoGetRandom.ps1del "Centro de secuencias de comandos" de Microsoft. El script original usa la RNGCryptoServiceProviderclase, que es casi lo mismo pero no está disponible en versiones antiguas de tiempo de ejecución de .NET 1.x).

información relacionada