Python生成随机128位字符串

4

我需要生成多个长度为128位(或16字节、32字符)的随机字符串,以备后续使用。目前我一直使用以下方法:

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

很遗憾,事实证明该方法不能始终生成32个字符,而我的实现需要这么做。它会产生一些比其他字符串短的字符串,例如30或31个字符,这是个问题。

是否有其他方法可以实现这一目标?

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')).encode()
'F9979BA22661180539D2081D30A09275'

出现以下错误 -->“AttributeError:'bytes'对象没有'encode'属性” - Turing101
@MohanSingh 括号不匹配。 - Asclepius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接