Защита презентаций паролем в Python

Обзор

Открывающий пароль шифрует презентацию. Правильный пароль необходим для загрузки и просмотра содержимого презентации, поэтому эта защита обеспечивает конфиденциальность.

Открывающий пароль отличается от пароля защиты от записи. Защита от записи ограничивает изменение, но не шифрует содержимое и не препятствует загрузке презентации. Чтобы управлять паролями для изменения презентаций, см. Защита презентаций от записи.

Приведённые ниже рабочие процессы применимы как к презентациям PPT, так и PPTX. В примерах используются оба формата, когда важно их файловое и потоковое поведение.

Шифрование презентации открывающим паролем

Используйте ProtectionManager.encrypt для назначения открывающего пароля. Затем используйте Presentation.save для сохранения зашифрованной презентации.

Следующий пример шифрует презентацию 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)

Загрузка зашифрованной презентации

Установите LoadOptions.password в открывающий пароль и передайте параметры в Presentation при загрузке файла. Загрузка завершится ошибкой, если требуется открывающий пароль, а предоставленный пароль отсутствует или неверен.

import aspose.slides as slides

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

with slides.Presentation("encrypted-pres.pptx", load_options) as presentation:
    # Работа с расшифрованной презентацией.
    pass

Удаление шифрования из презентации

Загрузите презентацию с её открывающим паролем, вызовите ProtectionManager.remove_encryption, и сохраните результат. Сохранённую презентацию затем можно загрузить без пароля.

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)

Проверка открывающего пароля перед загрузкой

Используйте PresentationFactory.get_presentation_info для получения PresentationInfo без создания полного экземпляра презентации. Проверьте PresentationInfo.is_password_protected перед запросом или проверкой пароля. Когда защита присутствует, проверьте предоставленное значение с помощью PresentationInfo.check_password.

Рабочий процесс с указанием пути к файлу

Следующий пример проверяет открывающий пароль для файла PPTX, передаёт проверенное значение в LoadOptions.password, а затем загружает полную презентацию:

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.")

Рабочий процесс с потоком

Перегрузка потока метода PresentationFactory.get_presentation_info обеспечивает тот же рабочий процесс. Сбросьте позицию ищущегося потока перед загрузкой полной презентации из этого потока.

Следующий пример использует файл 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.")

Возвращаемые значения CheckPassword

PresentationInfo.check_password возвращает True только когда у презентации есть открывающий пароль и предоставленный пароль верен. Он возвращает False в каждом из следующих случаев:

  • Пароль неверен.
  • У презентации нет открывающего пароля.
  • Предоставленный пароль равен None или пустой строке.

Поведение одинаково для презентаций PPT и PPTX.

Проверка, зашифрована ли загруженная презентация

После загрузки презентации с правильным паролем проверьте ProtectionManager.is_encrypted для подтверждения, что исходная презентация была зашифрована. Чтобы обнаружить защиту открывающим паролем до загрузки, используйте PresentationInfo.is_password_protected, как показано выше.

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))

Рекомендации по безопасности

Защита презентации паролем онлайн

  1. Откройте приложение Aspose.Slides Lock.
  2. Выберите или загрузите презентацию.
  3. Введите пароль для защиты просмотра.
  4. При желании введите отдельный пароль для защиты редактирования.
  5. Примените защиту и скачайте полученный файл.

FAQ

В чём разница между открывающим паролем и паролем защиты от записи?

Открывающий пароль шифрует презентацию и требуется для загрузки её содержимого. Пароль защиты от записи ограничивает изменения без шифрования содержимого.

Можно ли проверить открывающий пароль без загрузки всех слайдов?

Да. Получите информацию о презентации, проверьте наличие защиты открывающим паролем и проверьте пароль перед созданием полного экземпляра презентации.

Поддерживают ли рабочие процессы проверки пароля как PPT, так и PPTX?

Да. Обнаружение и проверка пароля по пути к файлу и по потоку ведут себя одинаково для презентаций PPT и PPTX.