binascii.hexlify(os.urandom(32)).decode() 是什么意思?

What does binascii.hexlify(os.urandom(32)).decode() mean?

我正在尝试开发一个函数来刷新 django rest 中的 token 模型 framework.They 似乎使用 binascii.hexlify(os.urandom(32)).decode() 为每个 user.How 生成唯一的标记此行确保它生成的令牌将始终是 unique.Suppose 如果我想每 10 个月刷新一次令牌的内容,那么 binascii.hexlify(os.urandom(32)).decode() 将生成任何当前用户未使用的唯一密钥或者我需要检查它是否正在使用?

help(os.urandom) 说:

Return a bytes object containing random bytes suitable for cryptographic use.

在 Linux 上,这将使用 /dev/urandom 字符设备,该设备被设计为具有加密安全性。只有当熵池尚未初始化时,它才可能无法生成,所以将是启动的早期阶段 1。但是一旦它被初始化并从先前的种子、设备驱动器等播种,您就会生成加密级随机性。

同时勾选 man 4 urandom

1 getrandom(2) 系统调用用于这些情况,不同于读取 /dev/urandom.


binascii.hexlify(os.urandom(32)).decode():

  • os.urandom(32) returns 32字节的随机数据
  • binascii.hexlify return字节的十六进制表示
  • 因为 hexlify 中的 return 是字节,我们需要 decode 它来获取字符串

因此,由于原始随机字节是从 os.urandom 中检索到的,因此这应该是(加密)安全随机性。