53 votes

chaîne d'octets aléatoire en python

J'ai buf="\x00\xFF\xFF\xFF\xFF\x00"

comment puis-je obtenir le "\xFF\xFF\xFF\xFF" randomisé ?

75voto

gnibbler Points 103484
>>> import os
>>> "\x00"+os.urandom(4)+"\x00"
'\x00!\xc0zK\x00'

33voto

Tatiana Al-Chueyr Points 925

Une autre façon d'obtenir une séquence aléatoire sécurisée d'octets pourrait être d'utiliser le secrets , disponible depuis Python 3.6.

Exemple, basé sur la question donnée :

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

Plus d'informations peuvent être trouvées à: https://docs.python.org/3/library/secrets.html

26voto

Federico Points 300
bytearray(random.getrandbits(8) for _ in xrange(size))

Plus rapide que d'autres solutions mais pas cryptographiquement sécurisée.

7voto

Janus Troelsen Points 5121

Sur les plateformes POSIX :

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

Utilisez /dev/random pour une meilleure randomisation.

6voto

yan Points 13348

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'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X