محافظت با رمز عبور ارائه‌ها در پایتون

نمای کلی

یک رمز عبور بازشو یک ارائه را رمزنگاری می‌کند. برای بارگذاری و مشاهده محتوای ارائه، رمز صحیح لازم است، بنابراین این حفاظت محرمانگی را فراهم می‌آورد.

یک رمز عبور بازشو با رمز عبور محافظت نوشتن متفاوت است. محافظت نوشتن فقط اصلاح را محدود می‌کند اما محتوا را رمزنگاری نمی‌کند و مانع بارگذاری ارائه نمی‌شود. برای مدیریت رمزهای عبور جهت اصلاح ارائه‌ها، به Write-Protect Presentations مراجعه کنید.

روال‌های زیر برای هر دو نوع ارائه PPT و PPTX اعمال می‌شوند. مثال‌ها هر دو فرمت را استفاده می‌کنند، جایی که رفتار مبتنی بر فایل یا جریان مهم است.

رمزنگاری یک ارائه با رمز عبور بازشو

از ProtectionManager.encrypt برای اختصاص یک رمز عبور بازشو استفاده کنید. سپس از Presentation.save برای ذخیرهٔ ارائه رمزنگاری‌شده استفاده کنید.

مثال زیر یک ارائه PPTX را رمزنگاری می‌کند:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("pres.pptx")
try:
    presentation.getProtectionManager().encrypt("open_password")
    presentation.save("encrypted-pres.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

حفظ عمومی ویژگی‌های سند

به طور پیش‌فرض، Aspose.Slides ویژگی‌های سند را در رمزنگاری ارائه درج می‌کند. متد ProtectionManager.setEncryptDocumentProperties این رفتار را به‌صورت مستقل از رمزنگاری محتوای اسلایدها کنترل می‌کند. هنگامیکه یک سیستم فهرست‌بندی، طبقه‌بندی، جستجو یا مدیریت سند باید فراداده‌ها را بدون رمز عبور بازشو بخواند، پیش از فراخوانی ProtectionManager.encrypt مقدار False را پاس کنید.

مثال زیر یک ارائه PPTX رمزنگاری‌شده ایجاد می‌کند در حالی که ویژگی‌های داخلی سند آن عمومی باقی می‌مانند:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    properties = presentation.getDocumentProperties()
    properties.setAuthor("Contoso Knowledge Management")
    properties.setTitle("Quarterly Product Roadmap")
    properties.setKeywords("roadmap, planning, internal")

    presentation.getSlides().get_Item(0).setName("Encrypted presentation content")
    presentation.getProtectionManager().setEncryptDocumentProperties(False)
    presentation.getProtectionManager().encrypt("open_password")
    presentation.save("public-properties-encrypted.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

ارسال False به ProtectionManager.setEncryptDocumentProperties اسلایدها، مسترها، چیدمان‌ها، اشکال، رسانه‌ها یا سایر محتوای ارائه را عمومی نمی‌کند. این تنظیم فقط بر ویژگی‌های سند تأثیر می‌گذارد. برای خواندن این ویژگی‌ها بدون بارگذاری محتوای رمزنگاری‌شده، به Manage Presentation Properties مراجعه کنید.

بارگذاری یک ارائه رمزنگاری‌شده

مقدار LoadOptions.setPassword را به رمز عبور بازشو تنظیم کنید و گزینه‌ها را هنگام بارگذاری فایل به Presentation پاس دهید. اگر رمز عبور بازشو لازم باشد اما رمز ارائه‌شده موجود نباشد یا نادرست باشد، بارگذاری با شکست مواجه می‌شود.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    # با ارائه رمزگشایی‌شده کار کنید.
    pass
finally:
    presentation.dispose()

حذف رمزنگاری از یک ارائه

ارائه را با رمز عبور بازشو آن بارگذاری کنید، متد ProtectionManager.removeEncryption را فراخوانی کنید و نتیجه را ذخیره کنید. پس از آن می‌توان ارائهٔ ذخیره‌شده را بدون رمز عبور بارگذاری کرد.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, SaveFormat

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    presentation.getProtectionManager().removeEncryption()
    presentation.save("encryption-removed.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

اعتبارسنجی یک رمز عبور بازشو پیش از بارگذاری

از PresentationFactory.getPresentationInfo برای به‌دست آوردن PresentationInfo بدون ایجاد یک نمونهٔ کامل از ارائه استفاده کنید. قبل از درخواست یا اعتبارسنجی رمز عبور، PresentationInfo.isPasswordProtected را بررسی کنید. وقتی حفاظت موجود باشد، مقدار ارائه‌شده را با PresentationInfo.checkPassword اعتبارسنجی کنید.

روال مسیر فایل

مثال زیر یک رمز عبور بازشو برای فایل PPTX اعتبارسنجی می‌کند، مقدار اعتبارسنجی‌شده را به LoadOptions.setPassword پاس می‌دهد و سپس ارائهٔ کامل را بارگذاری می‌کند:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationFactory

file_path = "protected-presentation.pptx"
password = "open_password"
presentation_info = PresentationFactory.getInstance().getPresentationInfo(file_path)

if not presentation_info.isPasswordProtected():
    print("The presentation does not have an opening password.")
elif not presentation_info.checkPassword(password):
    print("The opening password is incorrect.")
else:
    load_options = LoadOptions()
    load_options.setPassword(password)

    presentation = Presentation(file_path, load_options)
    try:
        print("The presentation was validated and loaded successfully.")
    finally:
        presentation.dispose()

روال جریان

بارگذاری جریان‌افزودهٔ PresentationFactory.getPresentationInfo همان روال را ارائه می‌دهد. قبل از بارگذاری ارائهٔ کامل از آن جریان، موقعیت یک جریان قابل جستجو را بازنشانی کنید.

مثال زیر از یک فایل PPT استفاده می‌کند:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, PresentationFactory

FileInputStream = jpype.JClass("java.io.FileInputStream")

password = "open_password"

presentation_stream = FileInputStream("protected-presentation.ppt")
try:
    presentation_info = PresentationFactory.getInstance().getPresentationInfo(presentation_stream)

    if not presentation_info.isPasswordProtected():
        print("The presentation does not have an opening password.")
    elif not presentation_info.checkPassword(password):
        print("The opening password is incorrect.")
    else:
        presentation_stream.getChannel().position(0)

        load_options = LoadOptions()
        load_options.setPassword(password)

        presentation = Presentation(presentation_stream, load_options)
        try:
            print("The presentation was validated and loaded successfully.")
        finally:
            presentation.dispose()
finally:
    presentation_stream.close()

مقادیر بازگشتی checkPassword

متد PresentationInfo.checkPassword تنها زمانی True برمی‌گرداند که ارائه دارای رمز عبور بازشو باشد و رمز ارائه‌شده صحیح باشد. در هر یک از موارد زیر False برمی‌گرداند:

  • رمز عبور نادرست است.
  • ارائه رمز عبور بازشو ندارد.
  • رمز عبور ارائه‌شده None یا خالی است.

این رفتار برای ارائه‌های PPT و PPTX یکسان است.

بررسی اینکه آیا یک ارائه بارگذاری‌شده رمزنگاری شده است

پس از بارگذاری یک ارائه با رمز عبور صحیح، ProtectionManager.isEncrypted را بررسی کنید تا تأیید کنید که ارائهٔ منبع رمزنگاری شده است. برای تشخیص وجود حفاظت رمز عبور بازشو پیش از بارگذاری، همان‌طور که در بالا نشان داده شد، از PresentationInfo.isPasswordProtected استفاده کنید.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation("encrypted-pres.pptx", load_options)
try:
    is_encrypted = presentation.getProtectionManager().isEncrypted()
    print(f"The presentation is encrypted: {is_encrypted}")
finally:
    presentation.dispose()

توصیه‌های امنیتی

حفاظت با رمز عبور یک ارائه به‌صورت آنلاین

  1. برنامه Aspose.Slides Lock را باز کنید.
  2. ارائه را انتخاب یا بارگذاری کنید.
  3. یک رمز عبور برای حفاظت از نمایش وارد کنید.
  4. در صورت نیاز، رمز عبور جداگانه‌ای برای حفاظت از ویرایش وارد کنید.
  5. محافظت را اعمال کنید و فایل حاصل را دانلود کنید.

FAQ

تفاوت رمز عبور بازشو و رمز عبور محافظت نوشتن چیست؟

رمز عبور بازشو ارائه را رمزنگاری می‌کند و برای بارگذاری محتوا لازم است. رمز عبور محافظت نوشتن فقط اصلاح را محدود می‌کند بدون اینکه محتوا را رمزنگاری کند.

آیا می‌توانم رمز عبور بازشو را بدون بارگذاری تمام اسلایدها اعتبارسنجی کنم؟

بله. اطلاعات ارائه را به‌دست آورید، بررسی کنید که آیا حفاظت با رمز عبور بازشو وجود دارد یا نه، و قبل از ایجاد یک نمونهٔ کامل از ارائه، رمز عبور را اعتبارسنجی کنید.

آیا یک برنامه می‌تواند متادیتا را بدون رمز عبور بازشو بخواند؟

بله، اما تنها زمانی که ارائه با غیرفعال‌سازی رمزنگاری ویژگی‌های سند رمزنگاری شده باشد. در این حالت برنامه باید از حالت بارگذاری فقط‑ویژگی‑های‑سند که در Manage Presentation Properties شرح داده شده، استفاده کند.

آیا روال‌های بررسی رمز عبور هم برای PPT و هم برای PPTX پشتیبانی می‌شوند؟

بله. تشخیص و اعتبارسنجی رمز عبور بر مبنای مسیر فایل و بر مبنای جریان برای ارائه‌های PPT و PPTX به‌یک شکل عمل می‌کند.