Python 生成随机 128 位字符串

问题描述 投票:0回答:2

我需要生成几个随机字符串供以后使用,长度为128位(或16个字节,32个字符)。 我到现在为止一直用这个:

hex(random.getrandbits(128))[2:]

不幸的是,它并不能始终如一地生成 32 个字符,而这是我的实现的要求。它生成的某些字符串比其他字符串短,即 30 或 31 个字符,这是一个问题。

还有其他方法可以实现这一目标吗?

python random bit
2个回答
4
投票
>>> import os
>>> os.urandom(16)
'S\x0e\xac\x91m\xcf\xf1\xae\x9b5\xf9A\xf3\xa2\xf9@'

1
投票

此方法应该一致地从伪随机 128 位整数生成可打印 32 个字符的字符串:

>>> import base64
>>> import random

>>> base64.b16encode(random.getrandbits(128).to_bytes(16, byteorder='little')).decode()
'F9979BA22661180539D2081D30A09275'
© www.soinside.com 2019 - 2024. All rights reserved.