ป้องกันการนำเสนอด้วยรหัสผ่านใน C++

ภาพรวม

รหัสผ่านเปิดใช้งานจะทำการเข้ารหัสการนำเสนอ จำเป็นต้องใช้รหัสผ่านที่ถูกต้องเพื่อโหลดและดูเนื้อหาการนำเสนอ ดังนั้นการป้องกันนี้จึงให้ความลับ.

รหัสผ่านเปิดใช้งานแตกต่างจากรหัสผ่านป้องกันการเขียน การป้องกันการเขียนจำกัดการแก้ไขแต่ไม่ได้เข้ารหัสเนื้อหาหรือป้องกันไม่ให้การนำเสนอถูกโหลด เพื่อจัดการรหัสผ่านสำหรับการแก้ไขการนำเสนอ ดูที่ Write-Protect Presentations.

ขั้นตอนการทำงานด้านล่างใช้กับการนำเสนอทั้งในรูปแบบ PPT และ PPTX ตัวอย่างใช้ทั้งสองรูปแบบเมื่อพฤติกรรมแบบไฟล์และสตรีมมีความสำคัญ.

เข้ารหัสการนำเสนอด้วยรหัสผ่านเปิดใช้งาน

ใช้ IProtectionManager::Encrypt เพื่อตั้งรหัสผ่านเปิดใช้งาน จากนั้นใช้ IPresentation::Save เพื่อบันทึกการนำเสนอที่ถูกเข้ารหัส.

ตัวอย่างต่อไปนี้จะเข้ารหัสการนำเสนอ PPTX:

#include <DOM/IProtectionManager.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"pres.pptx");

presentation->get_ProtectionManager()->Encrypt(u"open_password");
presentation->Save(u"encrypted-pres.pptx", SaveFormat::Pptx);

ตั้งค่าคุณสมบัติเอกสารเป็นสาธารณะ

โดยค่าเริ่มต้น Aspose.Slides จะรวมคุณสมบัติเอกสารในการเข้ารหัสการนำเสนอ IProtectionManager::set_EncryptDocumentProperties ควบคุมพฤติกรรมนี้แยกจากการเข้ารหัสเนื้อหาไสลด์ ส่งค่า false ไปยังเมธอดนี้ก่อนเรียก IProtectionManager::Encrypt เมื่อระบบจัดทำดัชนี การจัดประเภท การค้นหา หรือการจัดการเอกสารต้องอ่านข้อมูลเมตาโดยไม่ต้องใช้รหัสผ่านเปิดใช้งาน

ตัวอย่างต่อไปนี้สร้างการนำเสนอ PPTX ที่ถูกเข้ารหัสโดยยังคงคุณสมบัติเอกสารในตัวเป็นสาธารณะ:

#include <DOM/IDocumentProperties.h>
#include <DOM/IProtectionManager.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

auto presentation = MakeObject<Presentation>();

auto properties = presentation->get_DocumentProperties();
properties->set_Author(u"Contoso Knowledge Management");
properties->set_Title(u"Quarterly Product Roadmap");
properties->set_Keywords(u"roadmap, planning, internal");

presentation->get_Slide(0)->set_Name(u"Encrypted presentation content");
presentation->get_ProtectionManager()->set_EncryptDocumentProperties(false);
presentation->get_ProtectionManager()->Encrypt(u"open_password");
presentation->Save(u"public-properties-encrypted.pptx", SaveFormat::Pptx);

presentation->Dispose();

การส่งค่า false ไปยัง set_EncryptDocumentProperties ไม่ได้ทำให้สไลด์ มาสเตอร์ เลเอาต์ รูปร่าง สื่อ หรือเนื้อหาการนำเสนออื่น ๆ เป็นสาธารณะ จะส่งผลเฉพาะคุณสมบัติเอกสารเท่านั้น หากต้องการอ่านคุณสมบัติเหล่านั้นโดยไม่โหลดเนื้อหาที่เข้ารหัส ดูที่ Manage Presentation Properties.

โหลดการนำเสนอที่เข้ารหัส

กำหนดค่า LoadOptions::set_Password ให้เป็นรหัสผ่านเปิดใช้งานและส่งตัวเลือกนั้นไปยัง Presentation เมื่อโหลดไฟล์ การโหลดจะล้มเหลือเมื่อจำเป็นต้องใช้รหัสผ่านเปิดใช้งานแต่รหัสที่ให้มาหายไปหรือไม่ถูกต้อง.

#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>

using namespace Aspose::Slides;

auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->set_Password(u"open_password");

auto presentation = System::MakeObject<Presentation>(u"encrypted-pres.pptx", loadOptions);

// ทำงานกับการนำเสนอที่ถอดรหัสแล้ว.

ลบการเข้ารหัสออกจากการนำเสนอ

โหลดการนำเสนอพร้อมรหัสผ่านเปิดใช้งาน เรียกใช้ IProtectionManager::RemoveEncryption แล้วบันทึกผลลัพธ์ การนำเสนอที่บันทึกแล้วสามารถโหลดได้โดยไม่ต้องใช้รหัสผ่าน.

#include <DOM/IProtectionManager.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->set_Password(u"open_password");

auto presentation = System::MakeObject<Presentation>(u"encrypted-pres.pptx", loadOptions);

presentation->get_ProtectionManager()->RemoveEncryption();
presentation->Save(u"encryption-removed.pptx", SaveFormat::Pptx);

ตรวจสอบรหัสผ่านเปิดใช้งานก่อนโหลด

ใช้ IPresentationFactory::GetPresentationInfo เพื่อรับ IPresentationInfo โดยไม่ต้องสร้างอินสแตนซ์การนำเสนอเต็มรูปแบบ ตรวจสอบ IPresentationInfo::get_IsPasswordProtected ก่อนขอหรือยืนยันรหัสผ่าน เมื่อมีการป้องกัน ให้ตรวจสอบค่าที่ให้มาด้วย IPresentationInfo::CheckPassword.

ขั้นตอนการทำงานด้วยไฟล์พาธ

ตัวอย่างต่อไปนี้ตรวจสอบรหัสผ่านเปิดใช้งานสำหรับไฟล์ PPTX ส่งค่าที่ตรวจสอบแล้วไปยัง LoadOptions::set_Password แล้วโหลดการนำเสนอเต็มรูปแบบ:

#include <DOM/IPresentationInfo.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <DOM/PresentationFactory.h>
#include <system/console.h>
#include <system/string.h>

using namespace Aspose::Slides;
using namespace System;

String filePath = u"protected-presentation.pptx";
String password = u"open_password";
auto presentationInfo = PresentationFactory::get_Instance()->GetPresentationInfo(filePath);

if (!presentationInfo->get_IsPasswordProtected())
{
    Console::WriteLine(u"The presentation does not have an opening password.");
}
else if (!presentationInfo->CheckPassword(password))
{
    Console::WriteLine(u"The opening password is incorrect.");
}
else
{
    auto loadOptions = MakeObject<LoadOptions>();
    loadOptions->set_Password(password);
    auto presentation = MakeObject<Presentation>(filePath, loadOptions);

    Console::WriteLine(u"The presentation was validated and loaded successfully.");
}

ขั้นตอนการทำงานด้วยสตรีม

โอเวอร์โหลดสตรีมของ IPresentationFactory::GetPresentationInfo ให้ขั้นตอนการทำงานเดียวกัน รีเซ็ตตำแหน่งของสตรีมที่สามารถเลื่อนได้ก่อนโหลดการนำเสนอเต็มรูปแบบจากสตรีมนั้น.

ตัวอย่างต่อไปนี้ใช้ไฟล์ PPT:

#include <DOM/IPresentationInfo.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <DOM/PresentationFactory.h>
#include <system/console.h>
#include <system/io/file.h>
#include <system/string.h>

using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;

String password = u"open_password";
auto presentationStream = File::OpenRead(u"protected-presentation.ppt");
auto presentationInfo = PresentationFactory::get_Instance()->GetPresentationInfo(presentationStream);

if (!presentationInfo->get_IsPasswordProtected())
{
    Console::WriteLine(u"The presentation does not have an opening password.");
}
else if (!presentationInfo->CheckPassword(password))
{
    Console::WriteLine(u"The opening password is incorrect.");
}
else
{
    presentationStream->set_Position(0);

    auto loadOptions = MakeObject<LoadOptions>();
    loadOptions->set_Password(password);
    auto presentation = MakeObject<Presentation>(presentationStream, loadOptions);

    Console::WriteLine(u"The presentation was validated and loaded successfully.");
}

ค่าที่คืนจาก CheckPassword

IPresentationInfo::CheckPassword จะคืนค่า true ก็ต่อเมื่อการนำเสนอมีรหัสผ่านเปิดใช้งานและรหัสที่ให้มาถูกต้อง จะคืนค่า false ในกรณีต่อไปนี้:

  • รหัสผ่านไม่ถูกต้อง.
  • การนำเสนอไม่มีรหัสผ่านเปิดใช้งาน.
  • รหัสผ่านที่ให้มาเป็นค่า null หรือว่าง.

พฤติกรรมนี้เหมือนกันสำหรับการนำเสนอ PPT และ PPTX.

ตรวจสอบว่าการนำเข้าโหลดแล้วถูกเข้ารหัสหรือไม่

หลังจากโหลดการนำเสนอด้วยรหัสผ่านที่ถูกต้อง ให้ตรวจสอบ IProtectionManager::get_IsEncrypted เพื่อยืนยันว่าการนำเสนอเดิมถูกเข้ารหัส เพื่อค้นหาการป้องกันด้วยรหัสผ่านเปิดใช้งานก่อนโหลด ให้ใช้ IPresentationInfo::get_IsPasswordProtected ตามที่แสดงข้างต้น.

#include <DOM/IProtectionManager.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace System;

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_Password(u"open_password");
auto presentation = MakeObject<Presentation>(u"encrypted-pres.pptx", loadOptions);

bool isEncrypted = presentation->get_ProtectionManager()->get_IsEncrypted();
Console::WriteLine(isEncrypted ? u"The presentation is encrypted." : u"The presentation is not encrypted.");

คำแนะนำด้านความปลอดภัย

ป้องกันการนำเสนอด้วยรหัสผ่านออนไลน์

  1. เปิดแอปพลิเคชัน Aspose.Slides Lock.
  2. เลือกหรืออัปโหลดการนำเสนอ.
  3. ป้อนรหัสผ่านสำหรับการป้องกันการดู.
  4. หากต้องการสามารถป้อนรหัสผ่านแยกต่างหากสำหรับการป้องกันการแก้ไข.
  5. ทำการป้องกันและดาวน์โหลดไฟล์ที่ได้.

คำถามที่พบบ่อย

อะไรคือความแตกต่างระหว่างรหัสผ่านเปิดใช้งานและรหัสผ่านป้องกันการเขียน?

รหัสผ่านเปิดใช้งานจะทำการเข้ารหัสการนำเสนอและจำเป็นต้องใช้เพื่อโหลดเนื้อหา ส่วนรหัสผ่านป้องกันการเขียนจะจำกัดการแก้ไขโดยไม่ทำการเข้ารหัสเนื้อหา.

ฉันสามารถตรวจสอบรหัสผ่านเปิดใช้งานโดยไม่ต้องโหลดสไลด์ทั้งหมดได้หรือไม่?

ได้ จากนั้นดึงข้อมูลการนำเสนอ ตรวจสอบว่ามีการป้องกันด้วยรหัสผ่านเปิดใช้งานหรือไม่ และตรวจสอบรหัสผ่านก่อนสร้างอินสแตนซ์การนำเสนอเต็มรูปแบบ.

แอปพลิเคชันสามารถอ่านเมตาดาต้าโดยไม่ต้องใช้รหัสผ่านเปิดใช้งานได้หรือไม่?

ได้ แต่เฉพาะเมื่อการนำเสนอถูกเข้ารหัสด้วย set_EncryptDocumentProperties(false) แอปพลิเคชันต้องใช้โหมดการโหลดเฉพาะคุณสมบัติเอกสารตามที่อธิบายใน Manage Presentation Properties.

ขั้นตอนการตรวจสอบรหัสผ่านสนับสนุนทั้ง PPT และ PPTX หรือไม่?

ได้ การตรวจจับและตรวจสอบรหัสผ่านด้วยไฟล์พาธและสตรีมทำงานเช่นเดียวกันสำหรับการนำเสนอ PPT และ PPTX.