j'ai buf = "\ x00\xFF\xFF\xFF\xFF\x00"
comment puis-je obtenir le "\ xFF\xFF\xFF\xFF" au hasard
>>> import os
>>> "\x00"+os.urandom(4)+"\x00"
'\x00!\xc0zK\x00'
bytearray(random.getrandbits(8) for _ in xrange(size))
Plus rapide que d'autres solutions, mais pas cryptographiquement sécurisé.
Un autre moyen d’obtenir une séquence aléatoire d’octets sécurisée pourrait être d’utiliser le module standard secrets
de la bibliothèque, disponible depuis Python 3.6.
Exemple, basé sur la question donnée:
import secrets
b"\x00" + secrets.token_bytes(4) + b"\x00"
Vous trouverez plus d’informations sur: https://docs.python.org/3/library/secrets.html
Voulez-vous que les 4 octets du milieu soient définis sur une valeur aléatoire?
buf = '\x00' + ''.join(chr(random.randint(0,255)) for _ in range(4)) + '\x00'
Sur les plateformes POSIX:
open("/dev/urandom","rb").read(4)
Utilisez /dev/random
pour une meilleure randomisation.
J'aime utiliser la bibliothèque numpy pour cela.
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 )
Simple:
import random, operator
reduce(operator.add, ('%c' % random.randint(0, 255) for i in range(4)))