如何在 Erlang 中获得加密的强随机数,相当于从 Unix 上的 /dev/random 读取?
到目前为止,我只看到了使用 random:uniform 的建议,并用类似 now() 的东西来播种它,但它不够强大。
(是的,我知道它在 BSD 上是伪随机的,但显然他们认为它足够好,如果不是,那就是他们的问题)。
如何在 Erlang 中获得加密的强随机数,相当于从 Unix 上的 /dev/random 读取?
到目前为止,我只看到了使用 random:uniform 的建议,并用类似 now() 的东西来播种它,但它不够强大。
(是的,我知道它在 BSD 上是伪随机的,但显然他们认为它足够好,如果不是,那就是他们的问题)。
这个更好:crypto:strong_rand_bytes/1
它使用加密安全的 prng 播种并定期与操作系统提供的熵混合。
如果要将字节转换为整数,请尝试crypto:bytes_to_integer(crypto:strong_rand_bytes(N))
(N
是您要随机生成的字节数)。
使用crypto
模块的提示:使用最新版本的 Erlang :)