Protección con contraseña de presentaciones en Python

Visión general

Una contraseña de apertura cifra una presentación. Se requiere la contraseña correcta para cargar y ver el contenido de la presentación, por lo que esta protección proporciona confidencialidad.

Una contraseña de apertura es diferente de una contraseña de protección contra escritura. La protección contra escritura restringe la modificación pero no cifra el contenido ni impide que se cargue la presentación. Para administrar contraseñas para modificar presentaciones, consulte Write-Protect Presentations.

Los flujos de trabajo a continuación se aplican tanto a presentaciones PPT como PPTX. Los ejemplos utilizan ambos formatos cuando su comportamiento basado en archivos y en flujos es importante.

Cifrar una presentación con una contraseña de apertura

Utilice ProtectionManager.encrypt para asignar una contraseña de apertura. A continuación, utilice Presentation.save para guardar la presentación cifrada.

El siguiente ejemplo cifra una presentación PPTX:

import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    presentation.protection_manager.encrypt("open_password")
    presentation.save("encrypted-pres.pptx", slides.export.SaveFormat.PPTX)

Mantener públicas las propiedades del documento

De forma predeterminada, Aspose.Slides incluye las propiedades del documento en el cifrado de la presentación. La propiedad ProtectionManager.encrypt_document_properties controla este comportamiento de forma independiente del cifrado del contenido de las diapositivas. Establézcalo en False antes de llamar a ProtectionManager.encrypt cuando un sistema de indexación, clasificación, búsqueda o gestión documental necesite leer los metadatos sin la contraseña de apertura.

El siguiente ejemplo crea una presentación PPTX cifrada dejando sus propiedades integradas del documento públicas:

import aspose.slides as slides

with slides.Presentation() as presentation:
    properties = presentation.document_properties
    properties.author = "Contoso Knowledge Management"
    properties.title = "Quarterly Product Roadmap"
    properties.keywords = "roadmap, planning, internal"

    presentation.slides[0].name = "Encrypted presentation content"
    presentation.protection_manager.encrypt_document_properties = False
    presentation.protection_manager.encrypt("open_password")
    presentation.save("public-properties-encrypted.pptx", slides.export.SaveFormat.PPTX)

Establecer encrypt_document_properties en False no hace públicas las diapositivas, maestros, diseños, formas, medios u otro contenido de la presentación. Solo afecta a las propiedades del documento. Para leer esas propiedades sin cargar el contenido cifrado, consulte Manage Presentation Properties.

Cargar una presentación cifrada

Establezca LoadOptions.password con la contraseña de apertura y pase las opciones a Presentation al cargar el archivo. La carga falla cuando se requiere una contraseña de apertura pero la contraseña suministrada falta o es incorrecta.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    # Trabajar con la presentación descifrada.
    pass

Eliminar el cifrado de una presentación

Cargue la presentación con su contraseña de apertura, llame a ProtectionManager.remove_encryption y guarde el resultado. La presentación guardada podrá cargarse luego sin una contraseña.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    presentation.protection_manager.remove_encryption()
    presentation.save("encryption-removed.pptx", slides.export.SaveFormat.PPTX)

Validar una contraseña de apertura antes de cargar

Utilice PresentationFactory.get_presentation_info para obtener PresentationInfo sin crear una instancia completa de la presentación. Verifique PresentationInfo.is_password_protected antes de solicitar o validar una contraseña. Cuando exista protección, valide el valor suministrado con PresentationInfo.check_password.

Flujo de trabajo con ruta de archivo

El siguiente ejemplo valida una contraseña de apertura para un archivo PPTX, pasa el valor validado a LoadOptions.password y luego carga la presentación completa:

import aspose.slides as slides

file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_path)

if not presentation_info.is_password_protected:
    print("The presentation does not have an opening password.")
elif not presentation_info.check_password(password):
    print("The opening password is incorrect.")
else:
    load_options = slides.LoadOptions()
    load_options.password = password

    with slides.Presentation(file_path, load_options) as presentation:
        print("The presentation was validated and loaded successfully.")

Flujo de trabajo con flujo

La sobrecarga de flujo de PresentationFactory.get_presentation_info proporciona el mismo flujo de trabajo. Restablezca la posición de un flujo con capacidad de búsqueda antes de cargar la presentación completa desde ese flujo.

El siguiente ejemplo utiliza un archivo PPT:

import aspose.slides as slides

password = "open_password"

with open("protected-presentation.ppt", "rb") as presentation_stream:
    presentation_info = slides.PresentationFactory.instance.get_presentation_info(presentation_stream)

    if not presentation_info.is_password_protected:
        print("The presentation does not have an opening password.")
    elif not presentation_info.check_password(password):
        print("The opening password is incorrect.")
    else:
        presentation_stream.seek(0)
        load_options = slides.LoadOptions()
        load_options.password = password

        with slides.Presentation(presentation_stream, load_options) as presentation:
            print("The presentation was validated and loaded successfully.")

Valores de retorno de CheckPassword

PresentationInfo.check_password devuelve True solo cuando la presentación tiene una contraseña de apertura y la contraseña suministrada es correcta. Devuelve False en cada uno de los siguientes casos:

  • La contraseña es incorrecta.
  • La presentación no tiene una contraseña de apertura.
  • La contraseña suministrada es None o está vacía.

El comportamiento es el mismo para presentaciones PPT y PPTX.

Comprobar si una presentación cargada está cifrada

Después de cargar una presentación con la contraseña correcta, inspeccione ProtectionManager.is_encrypted para confirmar que la presentación original estaba cifrada. Para detectar la protección mediante contraseña de apertura antes de cargar, utilice PresentationInfo.is_password_protected como se mostró arriba.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    is_encrypted = presentation.protection_manager.is_encrypted
    print("The presentation is encrypted: " + str(is_encrypted))

Recomendaciones de seguridad

Proteger una presentación con contraseña en línea

  1. Abra la aplicación Aspose.Slides Lock.
  2. Seleccione o cargue la presentación.
  3. Introduzca una contraseña para la protección de visualización.
  4. Opcionalmente, introduzca una contraseña diferente para la protección de edición.
  5. Aplique la protección y descargue el archivo resultante.

Preguntas frecuentes

¿Cuál es la diferencia entre una contraseña de apertura y una contraseña de protección contra escritura?

Una contraseña de apertura cifra la presentación y es necesaria para cargar su contenido. Una contraseña de protección contra escritura restringe la modificación sin cifrar el contenido.

¿Puedo validar una contraseña de apertura sin cargar todas las diapositivas?

Sí. Obtenga la información de la presentación, compruebe si existe protección mediante contraseña de apertura y valide la contraseña antes de crear una instancia completa de la presentación.

¿Puede una aplicación leer los metadatos sin la contraseña de apertura?

Sí, pero solo cuando la presentación se cifró con encrypt_document_properties establecido en False. Entonces la aplicación debe utilizar el modo de carga solo de propiedades del documento descrito en Manage Presentation Properties.

¿Los flujos de trabajo de verificación de contraseñas son compatibles tanto con PPT como con PPTX?

Sí. La detección y validación de contraseñas basadas en ruta de archivo y en flujos se comportan de la misma manera para presentaciones PPT y PPTX.