我目前正在Python中生成UUID,如下所示:
import uuid
import secrets
uuid.UUID(bytes=secrets.token_bytes(16))
Run Code Online (Sandbox Code Playgroud)
这可以安全地用作API令牌或访问令牌吗?
您目前的方法可以说是安全可靠的两个原因:
secrets专门设计用于生成加密强随机数;token_bytes()实际上只是对 的调用os.urandom(),它反过来从特定于操作系统的随机源返回随机字节。*一个建议 -uuid.uui4()在没有调用中间函数的开销的情况下做基本上完全相同的事情:
# https://github.com/python/cpython/blob/3.5/Lib/uuid.py
def uuid4():
"""Generate a random UUID."""
return UUID(bytes=os.urandom(16), version=4)
Run Code Online (Sandbox Code Playgroud)
无论如何,另一个建议 - 您可以使用.hex生成的 UUID 对象来获得一个不错的非连字符字符串。
>>> uuid.uuid4().hex
'22c482ef3cd84c26bb49c0287828428f'
Run Code Online (Sandbox Code Playgroud)
*在 Unix 上/dev/urandom,它从设备驱动程序等来源收集信息。即特定于生成机器但足够随机且无法识别主机本身的乱码信息。
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |