4

後で使用する長さ 128 ビット (または 16 バイト、32 文字) のランダムな文字列をいくつか生成する必要があります。私は今までこれを使用してきました:

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

残念ながら、私の実装の要件である 32 文字を一貫して生成しないことが判明しました。それが生成するいくつかの文字列は他のものよりも短い (つまり 30 または 31 文字) ため、これが問題です。

これを達成する別の方法はありますか?

4

2 に答える 2

4
>>> import os
>>> os.urandom(16)
'S\x0e\xac\x91m\xcf\xf1\xae\x9b5\xf9A\xf3\xa2\xf9@'
于 2013-04-27T02:35:09.910 に答える
1

このアプローチは、疑似乱数の 128 ビット整数から印刷可能な32 文字の文字列を一貫して生成する必要があります。

>>> import base64
>>> import random

>>> base64.b16encode(random.getrandbits(128).to_bytes(16, byteorder='little')).encode()
'F9979BA22661180539D2081D30A09275'
于 2020-08-27T23:02:52.187 に答える