Windows上有什么熵源?

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

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

这是我最初的功能列表:

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


尽管CryptGenRandom函数的早期版本可能包含弱点,但后续版本会遵循安全标准(请参阅CrypGenRandom页面上的注释)。

将时间用作种子是很弱的。 什么是随机数生成最安全的种子? 这解释了不可预知的随机种子可能只需要128比特来产生安全的PRNG。 因此,可能没有必要寻找比问题中列出的更多的源,并且通常CryptGenRandom函数已经包含并产生了足够的熵,因此调用者不需要这样做。

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


如果它有一个选项,你可以让用户移动鼠标指针一段时间。


大多数机器具有的唯一外部源是Mic In / Line In,调用waveInOpen + waveInPrepareHeader + waveInAddBuffer + waveInStart。 如何随机可能取决于硬件...

链接地址: http://www.djcxy.com/p/61917.html

上一篇: What entropy sources are available on Windows?

下一篇: What good source of entropy are available on a smart phone?