online - Hash aleatorio en Python
sha1 python (8)
Creo que lo que está buscando es un identificador único universal. Luego, el UUID del módulo en python es lo que está buscando.
import uuid
uuid.uuid4().hex
UUID4 le proporciona un identificador único aleatorio que tiene la misma longitud que una suma md5. Hex representará como una cadena hexagonal en lugar de devolver un objeto uuid.
¿Cuál es la forma más fácil de generar un hash aleatorio (MD5) en Python?
El módulo de secrets
fue agregado en Python 3.6+. Proporciona valores aleatorios criptográficamente seguros con una sola llamada. Las funciones toman un argumento nbytes
opcional, el valor predeterminado es 32 (bytes * 8 bits = tokens de 256 bits). MD5 tiene hashes de 128 bits, por lo que proporciona 16 para tokens "similares a MD5".
>>> import secrets
>>> secrets.token_hex(nbytes=16)
''17adbcf543e851aa9216acc9d7206b96''
>>> secrets.token_urlsafe(16)
''X7NYIolv893DXLunTzeTIQ''
>>> secrets.token_bytes(128 // 8)
b''/x0b/xdcA/xc0./x0e/x87/x9b`/x93//Ev/x1a|u''
Esto funciona tanto para python 2.xy 3.x
import os
import binascii
print(binascii.hexlify(os.urandom(16)))
''4a4d443679ed46f7514ad6dbe3733c3d''
Otro enfoque a esta pregunta específica:
import random, string
def random_md5like_hash():
available_chars= string.hexdigits[:16]
return ''''.join(
random.choice(available_chars)
for dummy in xrange(32))
No digo que sea más rápido o preferible a cualquier otra respuesta; solo que es otro enfoque :)
Sin embargo, otro enfoque. No tendrá que formatear un int para obtenerlo.
import random
import string
def random_string(length):
pool = string.letters + string.digits
return ''''.join(random.choice(pool) for i in xrange(length))
Te da flexibilidad en la longitud de la cuerda.
>>> random_string(64)
''XTgDkdxHK7seEbNDDUim9gUBFiheRLRgg7HyP18j6BZU5Sa7AXiCHP1NEIxuL2s0''
Un md5-hash es solo un valor de 128 bits, así que si quieres uno aleatorio:
import random
hash = random.getrandbits(128)
print "hash value: %032x" % hash
Aunque realmente no veo el punto. Tal vez deberías explicar por qué necesitas esto ...
import os, hashlib
hashlib.md5(os.urandom(32)).hexdigest()
import uuid
from md5 import md5
print md5(str(uuid.uuid4())).hexdigest()