我正在用python创建一个项目,我想创建一个加密安全的随机数,我该怎么做?我已经在线阅读了常规随机生成器生成的数字不是密码安全的信息,并且该函数os.urandom(n)
返回的是我的字符串,而不是数字。
您可以通过将ord
函数应用于所返回的字节来获取随机数列表os.urandom
,如下所示
>>> import os
>>> os.urandom(10)
'm\xd4\x94\x00x7\xbe\x04\xa2R'
>>> type(os.urandom(10))
<type 'str'>
>>> map(ord, os.urandom(10))
[65, 120, 218, 135, 66, 134, 141, 140, 178, 25]
报价os.urandom
文件,
返回 适合加密使用* 的
n
随机字节字符串。 *该函数从特定于操作系统的随机性源返回随机字节。尽管返回的数据的确切质量取决于操作系统的实现,但对于加密应用程序而言,返回的数据应该足够不可预测。在类似UNIX的系统上,它将进行查询
/dev/urandom
,而在Windows上,它将使用CryptGenRandom()
。
问题内容: 使用标准JDK在Java中生成安全的随机AES密钥的推荐方法是什么? 在其他帖子中,我发现了这一点,但是使用a 可能是一个更好的主意: 如果答案中包含对为什么这是生成随机密钥的一种好方法的解释,那将是很好的。谢谢! 问题答案: 我将使用您建议的代码,但略作简化: 让提供者选择计划如何获得随机性-不要定义可能不如提供者已经选择的东西更好的东西。 该代码示例假定(如Maarten所指出的那
问题内容: PHP的函数不能提供良好的随机数。因此,我开始使用据说效果更好的产品。但是这些结果有多好?有什么方法可以再次改善它们? 我的点子: 这应该给您“完美的”随机数,不是吗? 问题答案: 伪随机数生成器(PRNG)是非常复杂的野兽。 没有真正的“完美”随机数生成器-实际上,可以通过数学函数完成的最好的操作是伪随机数-对于大多数意图和目的,它们似乎足够随机。 实际上,从PRNG返回的数字中执行
原始关闭原因未解决 我正在尝试编写一个程序,询问用户他想要生成多少安全代码,然后它会在一个数组中输出他所请求的代码。 安全代码长度应为7个字符,格式如下:NNNNLLL,其中N是随机数,L是随机大写字母。 该方法应通过随机选择字符,即数字和字母,以上述格式创建安全代码。 如果用户选择生成4个代码,我希望程序会输出这样的内容: "2394QAB""2821TSZ""7173AAY""2236WQA"
问题内容: 这个问题:如何生成随机BigInteger描述了一种与BigIntegers实现与Random.nextInt(int n)相同的语义的方法。 我想对BigDecimal和Random.nextDouble()做同样的事情。 上述问题的一个答案建议创建一个随机的BigInteger,然后从中以随机的比例创建一个BigDouble。一个非常快速的实验表明这是一个非常糟糕的主意:) 我的直
对PHP中的openssl_random_pseudo_bytes()做了一些研究,我注意到在PHP源代码中openssl_random_pseudo_bytes()函数的实现中。OpenSSL的RAND_pseudo_bytes函数用于生成返回值,而不是RAND_bytes也可以在OpenSSL中使用。 OpenSSL对这两个功能的文档如下: RAND_pseudo_bytes()将num伪随机
问题内容: 我想创建一个随机的整数列表以进行测试。数字的分布并不重要。唯一要数的是 时间 。我知道生成随机数是一项耗时的任务,但是必须有更好的方法。 这是我当前的解决方案: v2比v1快,但无法大规模使用。它给出以下错误: ValueError:样本大于总体 是否有一个快速,有效的解决方案能够在这种规模上工作? 答案的一些结果 安德鲁的:0.000290962934494 咬人:0.0058455