ลายเซ็นดิจิทัล

ลายเซ็นดิจิทัล

Aspose.Words FOSS สำหรับ .NET สามารถตรวจสอบและยืนยันลายเซ็นดิจิทัลที่แนบไว้แล้วใน .docx เอกสารผ่าน Aspose.Words.DigitalSignatures namespace. รุ่นนี้ครอบคลุมลายเซ็น verification — การอ่านเมตาดาต้าลายเซ็น, ตรวจสอบความถูกต้อง, และตรวจสอบใบรับรองการลงนาม. รุ่นนี้ไม่รวมความสามารถในการสร้างลายเซ็นใหม่บนเอกสาร.


การอ่านลายเซ็นจากเอกสาร

ทุก Document จะเปิดเผยคุณสมบัติ DigitalSignatures ที่คืนค่า DigitalSignatureCollection — คอลเลกชันที่อ่านได้อย่างเดียว, สามารถวนซ้ำได้ของอ็อบเจกต์ DigitalSignature ที่มีอยู่แล้วในไฟล์ที่โหลดไว้ DigitalSignatureUtil.LoadSignatures(fileName) (และการโหลดทับ LoadSignatures(stream)) จะอ่านลายเซ็นโดยตรงจากไฟล์หรือสตรีมโดยไม่ต้องโหลดเอกสารเต็มลงในอ็อบเจกต์ Document ซึ่งมีประโยชน์เมื่อคุณต้องการตรวจสอบสถานะลายเซ็นเท่านั้น คุณสมบัติ IsValid ของคอลเลกชันจะรายงานว่าลายเซ็นทุกตัวที่มีอยู่เป็นของจริงหรือไม่, และ Count จะรายงานจำนวนลายเซ็นที่พบ.


การตรวจสอบลายเซ็นเดี่ยว

แต่ละ DigitalSignature จะเปิดเผย IsValid (ว่าลายเซ็นเป็นที่ถูกต้องตามการเข้ารหัสหรือไม่), SignatureType (ค่าประเภท DigitalSignatureType — CryptoApi, XmlDsig, หรือ Unknown), SignTime, Comments, SubjectName, IssuerName, และไบต์ดิบ SignatureValue. คุณสมบัติ CertificateHolder จะคืนค่าอ็อบเจกต์ CertificateHolder ที่หุ้มใบรับรองการลงลายเซ็น; คุณสมบัติ Certificate ของมันจะเปิดเผย X509Certificate2 พื้นฐานเพื่อให้คุณตรวจสอบฟิลด์มาตรฐานของใบรับรอง (ผู้ออก, ผู้ถือ, ช่วงเวลาความถูกต้อง) ด้วย API ใบรับรองของ .NET เอง.


สิ่งที่ไม่รองรับในรุ่นนี้

ส่วนผิวของ API ยังประกาศสมาชิกที่เกี่ยวกับการลงนาม — DigitalSignatureUtil.Sign(), SignOptions, และ XmlDsigLevel — เพื่อความเข้ากันทางโครงสร้างกับโมเดลวัตถุ Aspose.Words เชิงพาณิชย์สำหรับ .NET, แต่การสร้างลายเซ็นดิจิทัลใหม่บนเอกสารไม่ทำงานในรุ่น FOSS นี้. ใช้รุ่นนี้เพื่อ verify ลายเซ็นที่มีอยู่แล้วในเอกสาร; กระบวนการลงนามต้องการ Aspose.Words สำหรับ .NET.


เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • ควรเลือกใช้ DigitalSignatureUtil.LoadSignatures() แทนการเปิด Document ทั้งหมดเมื่อคุณเพียงต้องการตรวจสอบว่าไฟล์มีลายเซ็นหรือไม่ — จะช่วยหลีกเลี่ยงค่าใช้จ่ายในการแยกวิเคราะห์เนื้อหาเอกสารทั้งหมด.
  • ตรวจสอบ DigitalSignatureCollection.IsValid ก่อนเพื่อผลลัพธ์ผ่าน/ไม่ผ่านอย่างรวดเร็วก่อนที่จะวนลูปค่าของ DigitalSignature.IsValid รายบุคคล.
  • SignatureType บอกคุณว่ากลไกการลงนามใดที่สร้างลายเซ็น (CryptoApi กับ XmlDsig); สิ่งนี้ส่งผลต่อฟิลด์ของใบรับรองที่มีความหมาย.
  • ให้ถือ IsValid == false เป็นเงื่อนไขการล้มเหลวอย่างรุนแรงในท่อประมวลผลเอกสารอัตโนมัติ — อย่าแสดงเมตาดาต้าลายเซ็นจากลายเซ็นที่ไม่ถูกต้องว่าเชื่อถือได้.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้ไข
DigitalSignatures.Count มีค่าเป็น 0 บน .docx ที่ลงลายเซ็นไฟล์ถูกบันทึกใหม่โดยเครื่องมือที่ลบส่วนลายเซ็นออกตรวจสอบเทียบกับไฟล์ที่มีลายเซ็นต้นฉบับ ไม่ใช่สำเนาที่บันทึกใหม่
ลายเซ็นรายงาน IsValid = falseเนื้อหาเอกสารถูกเปลี่ยนแปลงหลังจากลงนาม, หรือใบรับรองไม่น่าเชื่อถือ/หมดอายุถือว่าไม่ถูกต้อง; อย่าพยายาม “ซ่อมแซม” ลายเซ็น
การพยายามลงนามเอกสารไม่มีผลการลงนามยังไม่ได้รับการทำงานในฉบับ FOSS นี้ใช้ Aspose.Words สำหรับ .NET (เชิงพาณิชย์) สำหรับกระบวนการลงนาม
CertificateHolder.Certificate ทำให้เกิดข้อยกเว้นเมื่อทำการตรวจสอบข้อมูลใบรับรองพื้นฐานมีรูปแบบไม่ถูกต้องหรือส่วนของลายเซ็นเสียหายยืนยันว่าไฟล์ต้นทางเป็นเอกสารที่ลงนามจริง, ไม่ถูกแก้ไข

FAQ

สามารถ Aspose.Words FOSS สำหรับ .NET ลงนามเอกสารได้หรือไม่?

ไม่. รุ่นนี้สามารถตรวจสอบลายเซ็นดิจิทัลที่มีอยู่ได้ แต่ไม่สามารถสร้างลายเซ็นใหม่ได้. วิธี DigitalSignatureUtil.Sign() และคลาส SignOptions มีอยู่ในพื้นผิว API เพื่อความเข้ากันของโครงสร้าง, แต่การลงนามไม่ทำงานที่นี่.

ฉันจะตรวจสอบว่าเอกสารถูกลงนามหรือไม่โดยไม่ต้องโหลดเต็มได้อย่างไร?

เรียก DigitalSignatureUtil.LoadSignatures(fileName), ซึ่งจะคืนค่า DigitalSignatureCollection โดยตรงจากไฟล์.

DigitalSignatureCollection.IsValid หมายความว่าอะไร?

มันเป็น true ก็ต่อเมื่อลายเซ็นทุกอันในคอลเลกชันเป็นที่ถูกต้องแต่ละอัน — วิธีที่รวดเร็วในการตรวจสอบความสมบูรณ์ของลายเซ็นเอกสารโดยรวมก่อนที่จะตรวจสอบแต่ละ DigitalSignature.

ฉันจะรับรายละเอียดใบรับรองของลายเซ็นได้จากที่ไหน?

ผ่าน DigitalSignature.CertificateHolder.Certificate, ซึ่งจะคืนค่า .NET X509Certificate2 มาตรฐาน.


API Reference สรุป

คลาส / เมธอดคำอธิบาย
Document.DigitalSignaturesลายเซ็นที่แนบไว้แล้วกับเอกสารที่โหลดแล้ว
DigitalSignatureUtil.LoadSignatures()อ่านลายเซ็นจากไฟล์หรือสตรีมโดยไม่ต้องโหลดเอกสารเต็ม
DigitalSignatureCollectionคอลเลกชันแบบอ่านอย่างเดียวของอ็อบเจ็กต์ DigitalSignature; IsValid, Count
DigitalSignatureลายเซ็นเดียว: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureTypeEnum: CryptoApi, XmlDsig, Unknown
CertificateHolderห่อหุ้มการลงนาม X509Certificate2

ดูเพิ่มเติม

 ภาษาไทย