如果我调用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随机 token ,以跟踪多个数据库引擎中的相关文档。

最佳答案

以下代码可在Python 2.7和3上使用:

from base64 import b64encode
from os import urandom

random_bytes = urandom(64)
token = b64encode(random_bytes).decode('utf-8')

关于python - 如何将python urandom转换为字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17958347/

10-09 04:45