ลายเซ็นดิจิทัล
ลายเซ็นดิจิทัล
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 |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | ห่อหุ้มการลงนาม X509Certificate2 |