秘密

秘密 属于 Python

{other: "%{count} 个练习"}

关于 秘密

在前面的概念中,我们讨论过 random 模块,它可以生成伪随机数和伪随机的数组顺序。

secrets模块在部分功能上与random有重叠,但这两个模块的设计侧重点截然不同。

  • random为建模和仿真中的高性能做了优化,其伪随机数生成“足够好”。
  • secrets的设计目标是密码学安全,适用于密码哈希、安全令牌生成和账户身份验证等应用。

关于为什么有必要新增secrets模块,更多细节请参见 PEP 506。

secrets模块相对小巧,用法也很直接,提供了生成随机整数、比特、字节、令牌,或从给定序列中随机取一项的方法。

要使用secrets,你必须先import它:

>>> import secrets

# Returns n, where 0 <= n < 1000.
>>> secrets.randbelow(1000) 
577

# 32-bit integers.
>>> secrets.randbits(32) 
3028709440

>>> bin(secrets.randbits(32))
'0b11111000101100101111110011110100'

# Pick at random from a sequence.
>>> secrets.choice(['my', 'secret', 'thing']) 
'thing'

# Generate a token made up of random hexadecimal digits.
>>> secrets.token_hex() 
'f683d093ea9aa1f2607497c837cf11d7afaefa903c5805f94b64f068e2b9e621'

# Generate a URL-safe token of random alphanumeric characters.
>>> secrets.token_urlsafe(16) 
'gkSUKRdiPDHqmImPi2HMnw'

如果你在编写对安全敏感的应用,肯定要读一读完整文档,里面有更多建议和示例。

通过 GitHub 编辑 该链接会在新窗口或标签页中打开