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

ภาพรวม

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

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

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

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

ใช้ IProtectionManager.encrypt เพื่อกำหนดรหัสผ่านเปิดใช้งาน แล้วใช้ IPresentation.save เพื่อบันทึกงานนำเสนอที่เข้ารหัสแล้ว

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

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

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

ทำให้คุณสมบัติของเอกสารเป็นสาธารณะ

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

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

import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation();
try {
    IDocumentProperties 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 ไปยัง IProtectionManager.setEncryptDocumentProperties ไม่ทำให้สไลด์ มาสเตอร์ การจัดเรียง รูปร่าง สื่อ หรืองานนำเสนอส่วนอื่นเป็นสาธารณะ จะส่งผลต่อเพียงคุณสมบัติของเอกสารเท่านั้น หากต้องอ่านคุณสมบัติเหล่านี้โดยไม่โหลดเนื้อหาที่เข้ารหัส ให้ดูที่ จัดการคุณสมบัติงานนำเสนอ

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

ตั้งค่า ILoadOptions.setPassword ให้เป็นรหัสผ่านเปิดใช้งานและส่งออปชันเหล่านั้นไปยังคอนสตรัคเตอร์ Presentation เมื่อทำการโหลดไฟล์ การโหลดจะล้มเหลวเมื่อจำเป็นต้องใช้รหัสผ่านเปิดใช้งานแต่ไม่ได้ระบุหรือระบุผิด

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    // ทำงานกับงานนำเสนอที่ถอดรหัสแล้ว.
} finally {
    presentation.dispose();
}

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

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

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    presentation.getProtectionManager().removeEncryption();
    presentation.save("encryption-removed.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

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

ขั้นตอนทำงานโดยใช้ไฟล์พาธ

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

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;

String filePath = "protected-presentation.pptx";
String password = "open_password";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(filePath);

if (!presentationInfo.isPasswordProtected()) {
    System.out.println("The presentation does not have an opening password.");
} else if (!presentationInfo.checkPassword(password)) {
    System.out.println("The opening password is incorrect.");
} else {
    LoadOptions loadOptions = new LoadOptions();
    loadOptions.setPassword(password);

    Presentation presentation = new Presentation(filePath, loadOptions);
    try {
        System.out.println("The presentation was validated and loaded successfully.");
    } finally {
        presentation.dispose();
    }
}

ขั้นตอนทำงานโดยใช้สตรีม

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

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

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationFactory;
import java.io.FileInputStream;

String password = "open_password";

FileInputStream presentationStream = new FileInputStream("protected-presentation.ppt");
try {
    IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(presentationStream);

    if (!presentationInfo.isPasswordProtected()) {
        System.out.println("The presentation does not have an opening password.");
    } else if (!presentationInfo.checkPassword(password)) {
        System.out.println("The opening password is incorrect.");
    } else {
        presentationStream.getChannel().position(0);

        LoadOptions loadOptions = new LoadOptions();
        loadOptions.setPassword(password);

        Presentation presentation = new Presentation(presentationStream, loadOptions);
        try {
            System.out.println("The presentation was validated and loaded successfully.");
        } finally {
            presentation.dispose();
        }
    }
} finally {
    presentationStream.close();
}

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

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

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

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

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

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

import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");

Presentation presentation = new Presentation("encrypted-pres.pptx", loadOptions);
try {
    boolean isEncrypted = presentation.getProtectionManager().isEncrypted();
    System.out.println("The presentation is encrypted: " + isEncrypted);
} finally {
    presentation.dispose();
}

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

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

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

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

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

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

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

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

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

ได้ แต่เฉพาะเมื่อการเข้ารหัสงานนำเสนอทำโดยปิดการเข้ารหัสคุณสมบัติของเอกสาร ระบบต้องใช้โหมดการโหลดเฉพาะคุณสมบัติของเอกสารตามที่อธิบายใน จัดการคุณสมบัติงานนำเสนอ

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

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