Windows上有哪些熵源?

soi*_*oid 4 windows random winapi cryptography entropy

我想在Windows上生成随机加密密钥.我在哪里可以获得熵?

我希望我的熵函数在没有网络连接的情况下工作,并且在Windows 2000及更高版本上可靠.即使是可能提供或不提供少量熵的来源也可能是有用的,因为所有来源都将汇集在一起​​.

这是我最初的功能列表:

GetCurrentProcessID, GetCurrentThreadID, GetTickCount, GetLocalTime, QueryPerformanceCounter, GlobalMemoryStatus, GetDiskFreeSpace, GetComputerName, GetUserName, GetCursorPos, GetMessageTime, GetSystemInfo, CryptGenRandom, GetProcessHandleCount, GetProcessMemoryInfo.

soi*_*oid 7

虽然早期版本的CryptGenRandom功能可能包含弱点,但后续版本遵循安全标准(请参阅CrypGenRandom页面上的备注.)

用时间作为种子是很弱的.在随机数生成的最安全种子是什么的情况下有一个答案这解释了不可预测的随机种子可能只需要128位来产生安全的PRNG.因此,可能没有必要找到比问题中列出的更多的源,并且通常CryptGenRandom函数已经包含并为其自身生成足够的熵,调用者不需要执行任何此操作.

CryptGenRandom和必须在它之前的函数CryptAcquireContext可以像这样从Delphi调用.