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



我正在尝试开发一个函数,该函数可以在django rest框架中刷新token模型。他们似乎使用binascii.hexlify(os.urandom(32)).decode()为每个用户生成唯一的令牌。此行如何确保它生成的令牌始终是唯一的。假设如果我想每 10 个月刷新一次令牌的内容,那么,binascii.hexlify(os.urandom(32)).decode()会生成任何当前用户尚未使用的唯一密钥,或者我需要检查它是否正在使用?

>help(os.urandom)说:

返回一个字节对象,其中包含适合加密使用的随机字节。

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

还要检查man 4 urandom

对于这些情况,存在 1getrandom(2)系统调用,这与从/dev/urandom读取不同


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

  • os.urandom(32)返回 32 字节的随机数据
  • binascii.hexlify返回字节的十六进制重复
  • 由于从hexlify返回的是字节,我们需要decode它才能得到字符串

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

相关内容

  • 没有找到相关文章