Amy 原创整理|资料核验:2026-10-31
【官方规则】Python 的 secrets 模块用于生成适合安全令牌等用途的随机数据。官方把它与主要面向建模和模拟的 random 默认伪随机生成器区分开来。
token_hex(nbytes) 的参数是随机字节数,每个字节会编码成两个十六进制字符。因此,token_hex(16) 得到的是 32 个十六进制字符。token_urlsafe 的输出采用 URL 安全的 Base64 表达,字符长度与参数字节数也不是一比一。
【教学练习】在本地调用这两个函数,分别记录传入的 nbytes 与输出字符串长度。只展示长度,不把实际使用中的令牌写进截图、日志或公开帖子。
【Amy 的建议】设计字段长度时,把“随机数据有多少字节”和“编码后需要多少字符”分开考虑,并显式设置参数。选用安全随机源只是令牌设计的一环,仍需按应用要求管理有效期、使用次数和存储;本文不提供可直接套用到所有系统的安全保证。