Windows 上是否有可以通过 CMD 或 Powershell 提供加密安全的随机字节的设备或可执行文件?

Windows 上是否有可以通过 CMD 或 Powershell 提供加密安全的随机字节的设备或可执行文件?

本质上,我正在寻找/dev/urandomLinux 上的 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 运行时版本中不可用。)

相关内容