我们从Python开源项目中,提取了以下24个代码示例,用于说明如何使用os.random()。
def web2py_uuid(ctokens=UNPACKED_CTOKENS): """ This function follows from the following discussion: `http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09` It works like uuid.uuid4 except that tries to use os.urandom() if possible and it XORs the output with the tokens uniquely associated with this machine. """ rand_longs = (random.getrandbits(64), random.getrandbits(64)) if HAVE_URANDOM: urand_longs = _struct_2_long_long.unpack(fast_urandom16()) byte_s = _struct_2_long_long.pack(rand_longs[0] ^ urand_longs[0] ^ ctokens[0], rand_longs[1] ^ urand_longs[1] ^ ctokens[1]) else: byte_s = _struct_2_long_long.pack(rand_longs[0] ^ ctokens[0], rand_longs[1] ^ ctokens[1]) return str(uuid.UUID(bytes=byte_s, version=4))
def web2py_uuid(ctokens=UNPACKED_CTOKENS): """ This function follows from the following discussion: http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09 It works like uuid.uuid4 except that tries to use os.urandom() if possible and it XORs the output with the tokens uniquely associated with this machine. """ rand_longs = (random.getrandbits(64), random.getrandbits(64)) if HAVE_URANDOM: urand_longs = struct.unpack('=QQ', fast_urandom16()) byte_s = struct.pack('=QQ', rand_longs[0] ^ urand_longs[0] ^ ctokens[0], rand_longs[1] ^ urand_longs[1] ^ ctokens[1]) else: byte_s = struct.pack('=QQ', rand_longs[0] ^ ctokens[0], rand_longs[1] ^ ctokens[1]) return str(uuid.UUID(bytes=byte_s, version=4))
def AES_new(key, IV=None): """Return an AES cipher object and random IV if None specified.""" if IV is None: IV = fast_urandom16() if HAVE_AES: return AES.new(key, AES.MODE_CBC, IV), IV else: return PYAES.AESModeOfOperationCBC(key, iv=IV), IV
def AES_new(key, IV=None): """ Returns an AES cipher object and random IV if None specified """ if IV is None: IV = fast_urandom16() return AES.new(key, AES.MODE_CBC, IV), IV
def initialize_urandom(): """ This function and the web2py_uuid follow from the following discussion: `http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09` At startup web2py compute a unique ID that identifies the machine by adding uuid.getnode() + int(time.time() * 1e3) This is a 48-bit number. It converts the number into 16 8-bit tokens. It uses this value to initialize the entropy source ('/dev/urandom') and to seed random. If os.random() is not supported, it falls back to using random and issues a warning. """ node_id = uuid.getnode() microseconds = int(time.time() * 1e6) ctokens = [((node_id + microseconds) >> ((i % 6) * 8)) % 256 for i in range(16)] random.seed(node_id + microseconds) try: os.urandom(1) have_urandom = True if sys.platform != 'win32': try: # try to add process-specific entropy frandom = open('/dev/urandom', 'wb') try: if PY2: frandom.write(''.join(chr(t) for t in ctokens)) else: frandom.write(bytes([]).join(bytes([t]) for t in ctokens)) finally: frandom.close() except IOError: # works anyway pass except NotImplementedError: have_urandom = False logger.warning( """Cryptographically secure session management is not possible on your system because your system does not provide a cryptographically secure entropy source. This is not specific to web2py; consider deploying on a different operating system.""") if PY2: packed = ''.join(chr(x) for x in ctokens) else: packed = bytes([]).join(bytes([x]) for x in ctokens) unpacked_ctokens = _struct_2_long_long.unpack(packed) return unpacked_ctokens, have_urandom
def initialize_urandom(): """ This function and the web2py_uuid follow from the following discussion: `http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09` At startup web2py compute a unique ID that identifies the machine by adding uuid.getnode() + int(time.time() * 1e3) This is a 48-bit number. It converts the number into 16 8-bit tokens. It uses this value to initialize the entropy source ('/dev/urandom') and to seed random. If os.random() is not supported, it falls back to using random and issues a warning. """ node_id = uuid.getnode() microseconds = int(time.time() * 1e6) ctokens = [((node_id + microseconds) >> ((i % 6) * 8)) % 256 for i in range(16)] random.seed(node_id + microseconds) try: os.urandom(1) have_urandom = True try: # try to add process-specific entropy frandom = open('/dev/urandom', 'wb') try: if python_version == 2: frandom.write(''.join(chr(t) for t in ctokens)) # python 2 else: frandom.write(bytes([]).join(bytes([t]) for t in ctokens)) # python 3 finally: frandom.close() except IOError: # works anyway pass except NotImplementedError: have_urandom = False logger.warning( """Cryptographically secure session management is not possible on your system because your system does not provide a cryptographically secure entropy source. This is not specific to web2py; consider deploying on a different operating system.""") if python_version == 2: packed = ''.join(chr(x) for x in ctokens) # python 2 else: packed = bytes([]).join(bytes([x]) for x in ctokens) # python 3 unpacked_ctokens = _struct_2_long_long.unpack(packed) return unpacked_ctokens, have_urandom
def initialize_urandom(): """ This function and the web2py_uuid follow from the following discussion: http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09 At startup web2py compute a unique ID that identifies the machine by adding uuid.getnode() + int(time.time() * 1e3) This is a 48-bit number. It converts the number into 16 8-bit tokens. It uses this value to initialize the entropy source ('/dev/urandom') and to seed random. If os.random() is not supported, it falls back to using random and issues a warning. """ node_id = uuid.getnode() microseconds = int(time.time() * 1e6) ctokens = [((node_id + microseconds) >> ((i % 6) * 8)) % 256 for i in range(16)] random.seed(node_id + microseconds) try: os.urandom(1) have_urandom = True try: # try to add process-specific entropy frandom = open('/dev/urandom', 'wb') try: if python_version == 2: frandom.write(''.join(chr(t) for t in ctokens)) # python 2 else: frandom.write(bytes([]).join(bytes([t]) for t in ctokens)) # python 3 finally: frandom.close() except IOError: # works anyway pass except NotImplementedError: have_urandom = False logger.warning( """Cryptographically secure session management is not possible on your system because your system does not provide a cryptographically secure entropy source. This is not specific to web2py; consider deploying on a different operating system.""") if python_version == 2: packed = ''.join(chr(x) for x in ctokens) # python 2 else: packed = bytes([]).join(bytes([x]) for x in ctokens) # python 3 unpacked_ctokens = struct.unpack('=QQ', packed) return unpacked_ctokens, have_urandom