Pythonで/dev/urandomから乱数をゲットしてみた

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

そう、int()の第二引数は基数を指定できるのだ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)