簡體   English   中英

在Python中為API令牌生成UUID

[英]Generating UUID for API tokens in Python

我目前正在Python中生成UUID,如下所示:

import uuid
import secrets

uuid.UUID(bytes=secrets.token_bytes(16))

這可以安全地用作API令牌或訪問令牌嗎?

您當前的方法有兩個原因,可以說是一個安全可靠的方法:

  • 生成具有128位熵的重復id的概率實際上 (這是您正在使用的標准UUID大小。)
  • 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)

另外一個建議 - 你可以使用.hex的UUID對象的.hex來獲得一個很好的非連字符串。

>>> uuid.uuid4().hex
'22c482ef3cd84c26bb49c0287828428f'

*在Unix上,這是/dev/urandom ,它從設備驅動程序等來源收集信息。 即亂碼信息,這是生成機器特有的,但足夠隨機,無法識別主機本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM