在python中,我需要生成16个字节(由于机器约束而特定)令牌以进行身份验证。最好的方法是什么:
答案 0 :(得分:1)
uuid.uuid4()
生成16个随机字节(如果可用则使用系统urandom),但在转换为可打印ASCII后,输出长度超过16个字节。您需要16个字节的随机数据,还是16个可打印字节?使用它作为令牌表明后者。在这种情况下,您将需要截断它(使用结束而不是开头,因为在开始时有一些非随机版本控制字节,并且剥离连字符,因为它们没有好处)并且意识到您有少于16个字节值得随意。
或者,自己对base64编码随机数据。使用b64比b16(十六进制)更适合16字节,uuid使用(12字节对8)
urandom implementations are OS specific。通常,urandom是非阻塞的,并且使用以可用熵为种子的PRNG。