Существует ли устройство или исполняемый файл в Windows, который может предоставить криптографически безопасные случайные байты через CMD или Powershell?

Существует ли устройство или исполняемый файл в Windows, который может предоставить криптографически безопасные случайные байты через CMD или Powershell?

По сути, я ищу эквивалент для Windows /dev/urandomв Linux.

Я знаю, что могу использовать Windows CNG через API C++, но не знаю, существует ли доступный (переносимый) метод доступа к случайным байтам в любой современной системе Windows через командную строку.

решение1

Все, что вы можете использовать через .NET (например, C#), вы также можете использовать через PowerShell, и это включает в себяКриптография.Генератор случайных чиселкласс. (В .NET Core 2.x этот класс реализован через CNGBCryptGenRandom()в Windows, OpenSSLRAND_байт()на Linux, AppleCryptoCCRandomGenerateBytes()на macOS.)

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

(Код адаптирован изCryptoGetRandom.ps1из "Script Center" Microsoft. Исходный скрипт использует RNGCryptoServiceProviderкласс, который почти то же самое, но недоступен в старых версиях среды выполнения .NET 1.x.)

Связанный контент