後で使用する長さ 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'