Ruby中的可种子CSPRNG

Ruby中的可种子CSPRNG,ruby,prng,Ruby,Prng,Ruby是否提供运行可种子CSPRNG的功能?从标准库中,OpenSSL/SecureRandom是加密安全的,但不可种子。Random是可种子的,但不是加密安全的 或者,在Ruby中仅使用OpenSSL API实例化加密安全的PRNG的安全方法是什么?我最终在Ruby中实现了DRBG_HMAC。代码可在此处找到:非主题,请尝试softwarerecs.stackexchange.com。奇怪的是,我昨天才开始研究这种性质的东西,但并不真正适合用作CSPRNG:-注意,安全通常意味着也要保护种子

Ruby是否提供运行可种子CSPRNG的功能?从标准库中,OpenSSL/SecureRandom是加密安全的,但不可种子。Random是可种子的,但不是加密安全的


或者,在Ruby中仅使用OpenSSL API实例化加密安全的PRNG的安全方法是什么?

我最终在Ruby中实现了DRBG_HMAC。代码可在此处找到:

非主题,请尝试softwarerecs.stackexchange.com。奇怪的是,我昨天才开始研究这种性质的东西,但并不真正适合用作CSPRNG:-注意,安全通常意味着也要保护种子过程(再加上确保高质量的种子数据)。我猜SecureRandom从其API中删除了这一点是为了避免最终用户损害其自身安全性。我认为这是一个非常重要的话题,因此StackOverflow上的一般社区都感兴趣。我的问题不是软件推荐;我在问是否存在一种我不知道的方法来实例化这样一个PRNG。你可以调用
OpenSSL::Random.seed('some data')
,也可以
write\u Random\u file
,然后
read\u Random\u file
,但从Ruby上看,这些方法并没有设置RNG的精确固定状态。我四处看了看,看起来你可以将任何你喜欢的数据添加到当前状态,它会混合在一起。似乎没有办法通过OpenSSL API精确设置当前状态。另请参见-那么您能否澄清您是希望完全控制CSPRNG的初始状态,还是仅仅确保它包含足够的熵以满足您的目的?后者似乎可以使用OpenSSLI完全控制初始状态。我想我需要写一个基于HMAC或AES的DRBG()