По сути, я ищу эквивалент для 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.)