我需要生成几个随机字符串供以后使用长度为 128 位(或 16 个字节,32 个字符)的字符串。到目前为止,我一直在使用它:
hex(random.getrandbits(128))[2:]
不幸的是,事实证明它并不能始终如一地产生 32 个字符,这是我实现的要求。它生成的某些字符串比其他字符串短,即 30 或 31 个字符,这是一个问题。
还有另一种方法可以实现这一目标吗?
>>> import os
>>> os.urandom(16)
'S\x0e\xac\x91m\xcf\xf1\xae\x9b5\xf9A\xf3\xa2\xf9@'
这种方法应该始终如一地从一个伪随机 128 位整数中生成一个可打印的32 个字符串:
>>> import base64
>>> import random
>>> base64.b16encode(random.getrandbits(128).to_bytes(16, byteorder='little')).encode()
'F9979BA22661180539D2081D30A09275'