Suma de comprobación de Python
-
Utilice la función
hashlib.md5()
para generar y comprobar lasuma de comprobación
de un archivoMD5
en Python -
Utilice el módulo
os
para generar y comprobar lasuma de comprobación
de un archivoMD5
en Python
Cuando se trata de cualquier lenguaje de programación popular y exitoso, el hash resulta ser una parte esencial de él. Uno de esos componentes del hash es realmente importante y significativamente relevante en la programación diaria, llamado suma de comprobación.
Este artículo discutirá Checksum y cómo generarlo para un archivo MD5
.
Las sumas de comprobación se utilizan en Python con el propósito de detectar errores en un archivo. Tienen la tarea básica de validar los datos en un archivo determinado. Aunque es bastante similar, difiere del hash incorporado proporcionado por Python en cierto modo, ya que es determinista.
Utilice la función hashlib.md5()
para generar y comprobar la suma de comprobación
de un archivo MD5
en Python
El módulo hashlib
se utiliza para implementar una interfaz común para varios algoritmos hash seguros y resúmenes de mensajes diferentes. Para implementar este método con éxito, necesitamos importar el módulo hashlib
al código Python.
Aquí, usaremos principalmente la función hashlib.md5()
, junto con la función update()
y la función hexdigest()
para actualizar y devolver un valor hexadecimal respectivamente.
El siguiente código utiliza la función hashlib.md5()
para generar y verificar la suma de comprobación
de un archivo MD5
en Python.
import hashlib
def md5(file1):
md5h = hashlib.md5()
with open(file1, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
md5h.update(chunk)
return md5h.hexdigest()
Debemos tener en cuenta que este código devolverá una cadena hexadecimal
que representa el resumen dado. El uso de la función digest()
devolverá los bytes empaquetados. El programador puede utilizar cualquiera de estas funciones teniendo en cuenta la salida deseada.
Utilice el módulo os
para generar y comprobar la suma de comprobación
de un archivo MD5
en Python
El módulo os
en Python proporciona acceso a varias funciones que ayudan a interactuar con el sistema operativo. El módulo os
es amplio y contiene varios módulos, todos los cuales se utilizan para cumplir diferentes propósitos.
Aquí, descargamos una imagen aleatoria y luego calculamos su suma de verificación para MD5
, usando una función de Python que creamos, y finalmente la comparamos con la suma de verificación generada con la ayuda de comandos Unix.
La definición de función para la función get_checksum()
:
import hashlib
def get_checksum(filename, hash_function):
"""Generate checksum for file based on hash function (MD5).
Args:
filename (str): Path to file that will have the checksum generated.
hash_function (str): Hash function name - supports MD5
Returns:
str`: Checksum based on Hash function of choice.
Raises:
Exception: Invalid hash function is entered.
"""
hash_function = hash_function.lower()
with open(filename, "rb") as f:
bytes = f.read()
if hash_function == "md5":
readable_hash = hashlib.md5(bytes).hexdigest()
else:
Raise("{} is an invalid hash function. Please Enter MD5 value")
return readable_hash
El siguiente código utiliza la función get_checksum()
definida anteriormente junto con el módulo os
para generar y verificar la suma de verificación
de un archivo MD5
en Python.
import os
pic = "g_circle-300x300.png"
resmd5 = get_checksum(pic, "md5")
os.system("md5 {}".format(pic))
print("Hash Function: MD5 - Filename: {}".format(resmd5))
Aunque MD5
se usa ampliamente, últimamente se ha descubierto que está roto y contiene muchos defectos. El proceso de generación y verificación de la suma de comprobación
de un archivo puede ser muy arriesgado, y no se recomienda utilizar un archivo MD5
para este propósito.
Además, un archivo MD5
no es realmente el mejor si necesita algo seguro criptográficamente, ya que no está a la altura cuando se trata de eso.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn