Buscar..


Introducción

hashlib implementa una interfaz común para muchos algoritmos de resumen de hash y resumen de mensajes. Se incluyen los algoritmos de hash seguro FIPS SHA1, SHA224, SHA256, SHA384 y SHA512.

Hash MD5 de una cadena

Este módulo implementa una interfaz común para muchos algoritmos de resumen de hash y resumen de mensajes. Se incluyen los algoritmos hash seguros SHA1, SHA224, SHA256, SHA384 y SHA512 de FIPS (definidos en FIPS 180-2), así como el algoritmo MD5 de RSA (definido en Internet RFC 1321).

Hay un método constructor nombrado para cada tipo de hash. Todos devuelven un objeto hash con la misma interfaz simple. Por ejemplo: use sha1() para crear un objeto hash SHA1.

hash.sha1()

Los constructores de algoritmos hash que siempre están presentes en este módulo son md5() , sha1() , sha224() , sha256() , sha384() y sha512() .

Ahora puede alimentar este objeto con cadenas arbitrarias usando el método update() . En cualquier momento, puede solicitar el resumen de la concatenación de las cadenas que se le han suministrado utilizando los métodos digest() o hexdigest() .

hash.update(arg)

Actualice el objeto hash con la cadena arg. Las llamadas repetidas son equivalentes a una sola llamada con la concatenación de todos los argumentos: m.update (a); m.update (b) es equivalente a m.update (a + b).

hash.digest()

Devuelva el resumen de las cadenas pasadas al método update () hasta el momento. Esta es una cadena de bytes digest_size que pueden contener caracteres no ASCII, incluidos los bytes nulos.

hash.hexdigest()

Al igual que digest () excepto que el resumen se devuelve como una cadena de doble longitud, que contiene solo dígitos hexadecimales. Esto se puede usar para intercambiar el valor de forma segura en el correo electrónico u otros entornos no binarios.

Aquí hay un ejemplo:

>>> import hashlib
>>> m = hashlib.md5()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
>>> m.digest_size
16
>>> m.block_size
64

o:

hashlib.md5("Nobody inspects the spammish repetition").hexdigest()
    'bb649c83dd1ea5c9d9dec9a18df0ffe9'

algoritmo proporcionado por OpenSSL

También existe un constructor new() genérico que toma el nombre de la cadena del algoritmo deseado como su primer parámetro para permitir el acceso a los hashes enumerados anteriormente, así como a cualquier otro algoritmo que pueda ofrecer su biblioteca OpenSSL. Los constructores nombrados son mucho más rápidos que new() y deberían preferirse.

Usando new() con un algoritmo proporcionado por OpenSSL:

>>> h = hashlib.new('ripemd160')
>>> h.update("Nobody inspects the spammish repetition")
>>> h.hexdigest()
'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc'


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow