Pythonで暗号論的に正しい乱数を取得する必要があったので/dev/urandomから乱数を取得してみた。
最初からos.urandom()なんてそのものズバリな関数があるので、こいつを使うぜ。
試しに128ビットの乱数を取得してみた。
>>> import os >>> random128bitdata = os.urandom(16) >>> random128bitdata '\x19\x96\xfe\xd5J\xf7\xd1\xb1B|Y\xbd\xe01\xe2\xdd'
うむ、取得成功。
ちなみに16進表記にしたければbinasciiモジュールで変換すると便利。
>>> import binascii >>> binascii.hexlify(random128bitdata) '1996fed54af7d1b1427c59bde031e2dd'
さらに、文字列でなく数値で欲しいならこんな感じで。
>>> int(binascii.hexlify(random128bitdata), 16) 34014713054242549678150113052966642397L