webdevqa.jp.net

pythonのランダムバイト文字列

私はbuf = "\ x00\xFF\xFF\xFF\xFF\x00"を持っています

「\ xFF\xFF\xFF\xFF」をランダム化するにはどうすればよいですか

25
zack
>>> import os
>>> "\x00"+os.urandom(4)+"\x00"
'\x00!\xc0zK\x00'
47
John La Rooy
bytearray(random.getrandbits(8) for _ in xrange(size))

他のソリューションより高速ですが、暗号的に安全ではありません。

16
Federico

バイトの安全なランダムシーケンスを取得する別の方法は、標準ライブラリsecretsモジュールを使用することです。これはPython 3.6。

与えられた質問に基づく例:

import secrets
b"\x00" + secrets.token_bytes(4) + b"\x00"

詳細については、 https://docs.python.org/3/library/secrets.html を参照してください。

14

真ん中の4バイトをランダムな値に設定しますか?

buf = '\x00' + ''.join(chr(random.randint(0,255)) for _ in range(4)) + '\x00'
6
yan

POSIXプラットフォームの場合:

open("/dev/urandom","rb").read(4)

使用する /dev/randomランダム化を改善します。

5
Janus Troelsen

そのためにnumpyライブラリを使用するのが好きです。

import numpy as np

X_1KB = 1024
X_256KB = 256 * X_1KB
X_1MB = 1024 * 1024
X_4MB = 4 * X_1MB
X_32MB = 32 * X_1MB
X_64MB = 2 * X_32MB
X_128MB = X_1MB * 128


np.random.bytes( X_1MB )
1
Saher Ahwal

シンプル:

import functools, random, operator
functools.reduce(operator.add, ('%c' % random.randint(0, 255) for i in range(4)))
1
bradley.ayers