- 已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于Stack Overflow来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止已经采取了哪些措施来解决它。
八年前就关门了。
Improve this question
有人能推荐一个密码学上安全的Delphi(Win32)伪随机数生成器库吗?
可以免费或商业,但最好是一个积极的项目。我想它包括源代码。
6条答案
按热度按时间qvsjd97n1#
您可以使用Windows CryptoAPI:
使用上述代码的示例:
wdebmtf22#
Delphi Encryption Compendium(它在德语 Delphi 社区中很有名,但在其他地方并不出名--大概是因为它没有被正式推广)包含一个加密安全的Yarrow RNG。
只需包含单位
DECRandom
(也可以是DECUtils
),并像这样使用它(本例使用IInteger
,但这不是强制性的):jgovgodb3#
看看ISAAC (Indirection, Shift, Accumulate, Add, and Count),一个快速的PRNG,也是密码学上安全的。也许ISAAC和著名的Mersenne Twister PRNG一样快。
Wolfgang Ehrhardt已经为ISAAC做了Pascal/ Delphi 移植(免费,源代码可用)。在作者的网站上也有一个到另一个Delphi移植的链接,但是我会选择“Wolfgang Ehrhardt”版本。我知道他的网站很多年了,从那时起他就一直在更新Pascal/Delphi例程。当然应该是这方面的Maven!
0g0grzrc4#
您可以使用现有的Win32
CryptGenRandom()
API。r8xiu3jd5#
OpenSSL将是一个可能性。源代码是可用的,虽然我不知道如果 Delphi 版本是可用的。它包括一个cryptographically secure prng。这是一个活跃的项目,但它可能是矫枉过正,为您正在寻找的。
6mw9ycah6#
我还打算建议OpenSSL libraries。你还可以得到加密,ssl,哈希等包括在内。
Indy已经转换了很多头文件,并且包含了RAND_screen--但是显然,在没有UI的程序上不能/不应该使用RAND_screen。不幸的是,它遗漏了大部分RAND_* 头文件--但是它们非常容易导入和使用。
例如:
然后在代码中:
当然,所讨论的相同种子问题仍然适用。