DEV Community

 AppInitDev
AppInitDev

Posted on

Integridad no es cifrado: verificar archivos con SHA-256 en Python

Integridad no es cifrado: verificar archivos con SHA-256 en Python

Las palabras «seguridad», «cifrado» e «integridad» suelen mezclarse. Sin embargo, una huella SHA-256 permite detectar cambios en un archivo; no oculta su contenido ni prueba por sí sola quién lo creó.

El problema y el alcance del ejemplo

La ficha de Encrypted: Cifrado de Archivos resume su función así: «Cifrado local de archivos, limpieza de metadatos EXIF, escáner OCR y privacidad.» Encrypted anuncia cifrado local y comprobación de integridad. Para estudiar una de esas funciones construimos un verificador SHA-256 por bloques, sin afirmar que sea el código usado por el producto.

Cómo reproducir la idea

Necesitas Python 3. Ejecuta el script en un directorio de pruebas: crea dos archivos distintos y observa sus resúmenes.

from hashlib import sha256
from pathlib import Path

def digest(path: Path) -> str:
    h = sha256()
    with path.open('rb') as handle:
        for block in iter(lambda: handle.read(1024 * 1024), b''):
            h.update(block)
    return h.hexdigest()

archivo = Path('mensaje.txt')
archivo.write_text('Version original', encoding='utf-8')
original = digest(archivo)
archivo.write_text('Version alterada', encoding='utf-8')
modificado = digest(archivo)
print('Antes:', original)
print('Después:', modificado)
print('¿Son iguales?', original == modificado)
Enter fullscreen mode Exit fullscreen mode

Qué demuestra el código

Leer por bloques evita cargar un archivo enorme en memoria. Al modificar un byte, el resumen normalmente cambia de forma significativa. Si guardamos la huella antes de una transferencia, podemos compararla con la del archivo recibido.

Pruebas recomendadas

Prueba con un archivo grande y observa que el uso de memoria se mantiene acotado. Modifica un carácter y vuelve a calcular la huella. Para una comprobación real, la huella esperada debe provenir de una fuente confiable.

Límites que conviene reconocer

SHA-256 no cifra y tampoco autentica un origen si un atacante puede sustituir tanto el archivo como su huella. Para autenticidad se requieren firmas digitales o MAC, según el caso. Para confidencialidad se necesita cifrado autenticado y gestión de claves.

Qué aprendemos

Una buena herramienta de privacidad debe explicar claramente qué amenaza resuelve cada operación. Una suma de verificación y una contraseña tienen objetivos diferentes.

Contexto y enlaces del autor

El tema se relaciona con las funciones declaradas públicamente de Encrypted: Cifrado de Archivos, una aplicación Android de AppInitDev. El código anterior es un ejemplo independiente: no se ha inspeccionado el repositorio privado ni se afirma que sea la implementación interna de la app. La referencia aparece al final para ofrecer contexto, no como requisito para completar el tutorial.

Image APPS

Referencia técnica

Python: hashlib

Top comments (0)