本质上,我正在寻找/dev/urandom
Linux 上的 Windows 对应版本。
我知道我可以通过 C++ API 使用 Windows CNG,但不知道是否有可用的(可移植的)方法通过命令行访问任何现代 Windows 系统上的随机字节。
答案1
任何可以通过 .NET(例如 C#)使用的东西,也可以通过 PowerShell 使用,其中包括密码学.随机数生成器类。(在 .NET Core 2.x 中,该类通过 CNG 实现BCryptGenRandom()在 Windows 上,OpenSSLRAND_bytes()在 Linux 上,AppleCryptoCCRandomGenerateBytes()在 macOS 上。
$bytes = New-Object byte[](8)
$rng = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$rng.GetBytes($bytes)
(代码改编自CryptoGetRandom.ps1来自微软的“脚本中心”。原始脚本使用了该类RNGCryptoServiceProvider
,它几乎是相同的,但在古老的 .NET 1.x 运行时版本中不可用。)