本質上,我正在尋找/dev/urandom
與 Linux 相同的 Windows 版本。
我知道我可以透過 C++ API 使用 Windows CNG,但不知道是否有可用的(可移植)方法透過命令列存取任何現代 Windows 系統上的隨機位元組。
答案1
您可以透過 .NET 使用的任何內容(例如 C#)也可以透過 PowerShell 使用,這包括密碼學.隨機數產生器班級。 (在.NET Core 2.x中,該類別是透過CNG實現的BCryptGenRandom()在 Windows 上,OpenSSLRAND_bytes()在 Linux、AppleCrypto 上CCRandomGenerateBytes()在 macOS 上。
$bytes = New-Object byte[](8)
$rng = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$rng.GetBytes($bytes)
(代碼改編自CryptoGetRandom.ps1來自微軟的「腳本中心」。原始腳本使用該類RNGCryptoServiceProvider
,這幾乎是相同的東西,但在古老的 .NET 1.x 運行時版本上不可用。