HMAC es un mecanismo para la autenticación de mensajes que utiliza funciones hash criptográficas. HMAC se puede utilizar con cualquier función hash criptográfica iterativa, por ejemplo, MD5, SHA-1, en combinación con una clave secreta compartida.
Este módulo implementa el algoritmo HMAC. La idea básica es generar un hash criptográfico de los datos reales combinados con una clave secreta compartida. El hash resultante se puede usar para verificar el mensaje transmitido o almacenado para determinar un nivel de confianza, sin transmitir la clave secreta.
hmac.new(key, msg=None, digestmod=None)
Devuelve un nuevo objeto hmac. key es un objeto bytes o bytearray que proporciona la clave secreta. Si msg está presente, se realiza la actualización de la llamada al método (msg). digestmod es el nombre del resumen, el constructor del resumen o el módulo para que lo use el objeto HMAC. Admite cualquier nombre adecuado para hashlib.new().
Un objeto HMAC tiene los siguientes métodos:
- HMAC.update(msg): este método actualiza el objeto hmac con msg. Las llamadas repetidas equivalen 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).
- HMAC.digest(): este método devuelve el resumen de los bytes pasados al método update() hasta el momento. Este objeto de bytes tendrá la misma longitud que el digest_size del resumen dado al constructor.
- HMAC.hexdigest(): este método es como el método digest() excepto que el resumen se devuelve como una string con el doble de longitud que contiene solo dígitos hexadecimales.
- HMAC.copy(): este método devuelve una copia o un clon del objeto hmac. Esto se puede usar para calcular de manera eficiente los resúmenes de strings que comparten una substring inicial común.
Un objeto hash tiene los siguientes atributos:
- HMAC.digest_size: el tamaño del resumen HMAC resultante en bytes.
- HMAC.block_size: el tamaño de bloque interno del algoritmo hash en bytes.
- HMAC.name: el nombre canónico de este HMAC. por ejemplo, hmac-sha1.
Ejemplo:
# Python 3 code to demonstrate the working of hmac module. import hmac import hashlib # creating new hmac object using sha1 hash algorithm digest_maker = hmac.new(b'secret-key', b'msg', hashlib.sha1) # print the Hexdigest of the bytes passed to update print ("Hexdigest: " + digest_maker.hexdigest()) # call update to update msg digest_maker.update(b'another msg') # print the Hexdigest of the bytes passed to update print ("Hexdigest after update: " + digest_maker.hexdigest()) print ("Digest size: " + str(digest_maker.digest_size) + " bytes") print ("Block size: " + str(digest_maker.block_size) + " bytes") print ("Canonical name: " + digest_maker.name) # print the digest of the bytes passed to update print ("Digest: ", end =" ") print (digest_maker.digest()) # create a copy of the hmac object digest_clone = digest_maker.copy() print ("Hexdigest of clone: " + digest_clone.hexdigest())
Producción:
Hexdigest: df2ae7cdb5c849001e33ee29eb1c51ba2cafbaa7 Hexdigest after update: 3923273eb3aa9328478eb5aabf2d96e185256b4b Digest size: 20 bytes Block size: 64 bytes Canonical name: hmac-sha1 Digest: b"9#'>\xb3\xaa\x93(G\x8e\xb5\xaa\xbf-\x96\xe1\x85%kK" Hexdigest of clone: 3923273eb3aa9328478eb5aabf2d96e185256b4b
Este artículo es una contribución de Mayank Agrawal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA