urandom函数如何随机生成

时间:2014-03-21 05:20:32

标签: python random operating-system cryptography system

我是python和flask的新手。 在官方网站上阅读烧瓶教程时, 我发现使用urandom()函数是推荐生成密钥的方法。

在这里,我想知道urandom()是如何生成随机数的,以及为什么这在密码学上更安全。

我知道在C中使用的随机生成器中使用的基本原理,如果在urandom中使用相同的原则,则应该使用随机种子初始化它。但是,我没有在os模块API中看到种子相关的功能。

我发现有些文章说它在某些特定位置引用了一些值,但我不知道它与随机性有何关联以及为什么它可以安全使用。

1 个答案:

答案 0 :(得分:4)

  

此函数从特定于OS的随机性返回随机字节   资源。返回的数据应该是不可预测的   加密应用程序,虽然它的确切质量取决于操作系统   实现。在类UNIX系统上,这将查询/dev/urandom,   在Windows上,它将使用CryptGenRandom()。如果是随机源   未找到,NotImplementedError将被提升。

     

为所提供的随机数生成器提供易于使用的界面   在您的平台上,请参阅random.SystemRandom

[Source]