เข้ารหัสเอกสาร

การเข้ารหัสเป็นกระบวนการที่แปลข้อความที่อ่านได้เป็นลำดับไบต์ที่ไม่มีความหมาย ดังนั้นผู้ที่มีคีย์ถอดรหัสหรือรหัสลับเท่านั้นที่สามารถอ่านได้ กระบวนการนี้มีบทบาทสำคัญในการรักษาความปลอดภัยเนื้อหาของคุณ ช่วยในการเข้ารหัสเนื้อหา ตรวจสอบที่มาของเอกสาร พิสูจน์ว่าเนื้อหาไม่ได้รับการแก้ไขหลังจากส่ง และตรวจสอบให้แน่ใจว่าข้อมูลจากเอกสารนั้นปลอดภัย

บทความนี้จะอธิบายวิธีที่ Aspose.Words อนุญาตให้คุณเข้ารหัสเอกสาร และวิธีตรวจสอบว่าเอกสารมีการเข้ารหัสหรือไม่

เข้ารหัสด้วยรหัสผ่าน

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

ตารางด้านล่างแสดงรายการรูปแบบและอัลกอริธึมการเข้ารหัสที่ Aspose.Words รองรับ:

รูปแบบ รองรับการเข้ารหัสขณะโหลด รองรับการเข้ารหัสขณะบันทึก
หมอ DOT การเข้ารหัส XOR การเข้ารหัส RC4 40 บิตCryptoAPI การเข้ารหัส RC4 การเข้ารหัส RC4 (40 บิต)
DOCX, DOTX, DOCM, DOTM, FlatOPC, FlatOpcTemplate, FlatOpcMacroEnabled, FlatOpcTemplateMacroEnabled การเข้ารหัสแบบมาตรฐาน ECMA-376 การเข้ารหัสแบบ Agile ของ ECMA-376 การเข้ารหัสมาตรฐาน ECMA-376 (AES128 + SHA1)
โอดีที โอทีที การเข้ารหัส ODF (ปักเป้า/AES) การเข้ารหัส ODF (AES256 + SHA256)
ไฟล์ PDF การเข้ารหัส RC4 (40/128 บิต)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการเข้ารหัสเอกสารด้วยรหัสผ่าน:

import aspose.words as aw

# Create a document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.write("Hello world!")

# DocSaveOptions only applies to Doc and Dot save formats.
options = aw.saving.DocSaveOptions(aw.SaveFormat.DOC);

// Set a password with which the document will be encrypted, and which will be required to open it.
options.password = "MyPassword"
doc.save(artifacts_dir + "DocSaveOptions.SaveAsDoc.doc", options)

ตรวจสอบว่าเอกสารถูกเข้ารหัสหรือไม่

ในบางกรณี คุณอาจมีเอกสารที่ไม่สามารถอ่านได้ และต้องการให้แน่ใจว่าเอกสารนั้นได้รับการเข้ารหัส และไม่เสียหายหรือถูกบีบอัด

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

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการตรวจสอบการเข้ารหัสเอกสาร:

import aspose.words as aw

# Create a document.
doc = aw.Document()
saveOptions = aw.saving.OdtSaveOptions(aw.SaveFormat.ODT)
saveOptions.password = "MyPassword"

doc.Save(artifacts_dir + "File.DetectDocumentEncryption.odt", saveOptions)
            
# Create a `FileFormatInfo` object for this document.
info = aw.FileFormatUtil.detect_file_format(artifacts_dir + "File.DetectDocumentEncryption.odt")

# Verify the encryption status of our document.
self.assertTrue(info.is_encrypted)

เปิดเอกสารโดยมีหรือไม่มีรหัสผ่าน

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลองเปิดเอกสารที่เข้ารหัสโดยไม่มีรหัสผ่าน:

import aspose.words as aw

# Create a document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.write("Hello world!")

# OoxmlSaveOptions only applies to Docx, Docm, Dotx, Dotm, or FlatOpc formats.
options = aw.saving.OoxmlSaveOptions(aw.SaveFormat.DOCX)

# Set a password with which the document will be encrypted, and which will be required to open it.
options.password = "MyPassword"
doc.Save(artifacts_dir + "OoxmlSaveOptions.SaveAsDocx.docx", options)

# We will not be able to open this document with Microsoft Word or
# Aspose.Words without providing the correct password.
# The following line will throw an exception.
doc = aw.Document(artifacts_dir + "OoxmlSaveOptions.Password.docx"))

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลองเปิดเอกสารที่เข้ารหัสด้วยรหัสผ่าน:

import aspose.words as aw

# Create a document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.write("Hello world!")

# OoxmlSaveOptions only applies to Docx, Docm, Dotx, Dotm, or FlatOpc formats.
options = aw.saving.OoxmlSaveOptions(aw.SaveFormat.DOCX)

# Set a password with which the document will be encrypted, and which will be required to open it.
options.password = "MyPassword"
doc.Save(artifacts_dir + "OoxmlSaveOptions.SaveAsDocx.docx", options)

# Open the encrypted document by passing the correct password in a `LoadOptions` object.
doc = aw.Document(artifacts_dir + "OoxmlSaveOptions.Password.docx", aw.loading.LoadOptions("MyPassword"))

self.assertEqual("Hello world!", doc.get_text().strip())