如果我调用 os.urandom(64),我将获得 64 个随机字节。参考 Convert bytes to a Python string 我试过
a = os.urandom(64)
a.decode()
a.decode("utf-8")
但是收到回溯错误,指出字节不在 utf-8 中。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
与字节
b'\x8bz\xaf$\xb6\x93q\xef\x94\x99$\x8c\x1eO\xeb\xed\x03O\xc6L%\xe70\xf9\xd8
\xa4\xac\x01\xe1\xb5\x0bM#\x19\xea+\x81\xdc\xcb\xed7O\xec\xf5\\}\x029\x122
\x8b\xbd\xa9\xca\xb2\x88\r+\x88\xf0\xeaE\x9c'
是否有将这些字节解码为某种字符串表示形式的完全证明方法?我正在生成 sudo 随机标记来跨多个数据库引擎跟踪相关文档。
原文由 user1876508 发布,翻译遵循 CC BY-SA 4.0 许可协议
下面的代码适用于 Python 2.7 和 3: