python的标准随机数生成器模块是_在Python中使用secrets模块生成安全随机数-博客-dalbll...

随机模块提供的随机生成器是伪随机数生成器,它不具有加密安全性,因此在Python 3.6及更高版本中添加了secrets模块。

加密安全随机生成器使用同步方法生成随机数据,以确保没有两个进程可以同时获得相同的数据。

在Python 3.6之前,我们用os.urandom()和random.SystemRandom类加密地使随机数发生器安全。

注意

:secrets模块仅在Python3.6以及更高的版本中可以获得。如果你正在使用Python的旧版本,而却想要使随机生成器安全,请参考:https://pynative.com/cryptographically-secure-random-data-in-python

secrets模块是CSPRNG,即加密性强伪随机数发生器(cryptographically strong Pseudo-Random Number Generator)。它被用来生成随机数,在对安全敏感的应用程序中是安全和有用的。

请参阅PEP-0506。此PEP旨在将secrets模块添加到Python标准库中。

3.随机token

4.密码恢复安全URL和会话密钥

注意:secrets模块基于os.urandom()和random.SystemRandom(), 它们是操作系统最好的加密随机性源码的接口。

在Windows上,os.urandom()在内部使用CryptGenRandom(),Linux 3.17及更新版本,getrandom()系统调用现在可以使用,在OpenBSD 5.6及更高版本中,现在使用C getentropy()函数。

下面让我们来看如何使用secrets模块。

.使用操作系统提供的最高质量源来生成随机数的类

.使用secrets.SystemRandom类我们能使用所有的random模块的功能

.在secrets模块之前,我们使用random.SystemRandom去加密地使随机数据安全。使用secrets模块也可以使用同样的类。仅需执行secrets.SystemRandom()

让我们看一下如何使用secrets.SystemRandom类来保护随机生成器的示例:

import secrets

print("Random integer number generated using secrets module is ")

number = secrets.randbelow(10)

print(number)

number = secrets.randbelow(10)

print(number)

number = secrets.randbelow(10)

print(number)

#Getting systemRandom class instance out of secrets module

secretsGenerator = secrets.SystemRandom()

#random integer number uisng secrets

randomNumber = secrets

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值