我是python和flask的新手。 在官方网站上阅读烧瓶教程时, 我发现使用urandom()函数是推荐生成密钥的方法。
在这里,我想知道urandom()是如何生成随机数的,以及为什么这在密码学上更安全。
我知道在C中使用的随机生成器中使用的基本原理,如果在urandom中使用相同的原则,则应该使用随机种子初始化它。但是,我没有在os模块API中看到种子相关的功能。
我发现有些文章说它在某些特定位置引用了一些值,但我不知道它与随机性有何关联以及为什么它可以安全使用。
答案 0 :(得分:4)
此函数从特定于OS的随机性返回随机字节 资源。返回的数据应该是不可预测的 加密应用程序,虽然它的确切质量取决于操作系统 实现。在类UNIX系统上,这将查询
/dev/urandom
, 在Windows上,它将使用CryptGenRandom()
。如果是随机源 未找到,NotImplementedError
将被提升。为所提供的随机数生成器提供易于使用的界面 在您的平台上,请参阅
random.SystemRandom
。
[Source]