עבודה עם חתימה דיגיטלית

חתימה דיגיטלית משמשת כדי לאמת מסמך כדי לקבוע כי השולח של המסמך הוא מי הם אומרים שהם ואת התוכן של המסמך לא נחטף.

Aspose.Words תומך במסמכים עם חתימות דיגיטליות ומספק גישה אליהם ומאפשרת לך לזהות ולאמת חתימות דיגיטליות על מסמך ולחתום על מסמך PDF שנוצר עם תעודה מספקת. בזמן הנוכחי חתימות דיגיטליות נתמכות על מסמכי DOC, OOXML ו- ODT. הרשמה של מסמכים נוצרים נתמכת בפורמט PDF.

החתימות הדיגיטליות אינן שמורות על Open and Save

נקודה חשובה לציין כי מסמך טעון ולאחר מכן ניצל באמצעות Aspose.Words תאבד כל חתימה דיגיטלית שחתומה על המסמך. זה על ידי עיצוב כחתימה דיגיטלית מבטיח שהתוכן לא שונה ואמת יותר את זיהוי מי חתם על המסמך. עקרונות אלה יבוטלו אם החתימות המקוריות יועברו למסמך המתקבל.

בגלל זה, אם אתה מעבד מסמכים שהועלו לשרת זה יכול להיות אומר שאתה עלול להשחית מסמך שהועלו לשרת שלך בדרך זו מבלי לדעת. לכן כדאי לבדוק את החתימות הדיגיטליות על מסמך ולבצע את הפעולה המתאימה אם יימצאו, לדוגמה, ניתן לשלוח התראה ללקוח להודיע להם כי המסמך שהם עוברים מכיל חתימות דיגיטליות אשר יאבדו אם הוא מעובד. ניתן להוריד קובץ תבנית של דוגמא זו כאן.

הקוד לעיל משתמש FileFormatUtil.detect_file_format שיטה לזהות אם מסמך מכיל חתימה דיגיטלית מבלי לטעון את המסמך קודם. זה מספק דרך יעילה ובטוחה לבדוק מסמך לחתימות לפני עיבודן. בעת ביצוע, השיטה מחזירה FileFormatInfo אובייקט המספק את הנכס FileFormatInfo.has_digital_signature. הנכס הזה חוזר true אם המסמך מכיל חתימה דיגיטלית אחת או יותר. חשוב לציין כי שיטה זו אינה מאשרת את החתימות, היא קובעת רק אם החתימות קיימות. אימות חתימות דיגיטליות מכוסה בסעיף הבא.

חתימה דיגיטלית על Macros (VBA פרויקטים)

חתימה דיגיטלית על מאקרו לא ניתן לגשת או לחתום. כי Aspose.Words אין להתמודד ישירות עם מאקרו במסמך. עם זאת, חתימות דיגיטליות על מאקרו נשמרות כאשר מייצא את המסמך בחזרה לכל פורמט מילים. ניתן לשמר את החתימות הללו על קוד VBA מכיוון שהתוכן בינארי של המאקרו לא השתנה גם אם המסמך עצמו משתנה.

גישה ובדוק חתימה דיגיטלית

מסמך יכול להיות מספר חתימות דיגיטליות. ניתן לגשת לכל החתימות הללו באמצעות Document.digital_signatures אוסף. כל חפץ שחזר הוא DigitalSignature זה מייצג חתימה דיגיטלית אחת השייכת למסמך. זה מספק חברים המאפשרים לך לבדוק את תוקף החתימה.

הנכס החשוב ביותר לבדוק עם חתימה דיגיטלית הוא תוקף של כל חתימה במסמך. ניתן לאמת את כל החתימות במסמך בבת אחת באמצעות קריאה DigitalSignatureCollection.is_valid רכוש. זה ישוב true אם כל החתימות במסמך תקפים או אם המסמך אין חתימה, false אם לפחות חתימה דיגיטלית אחת אינה תקפה.

ניתן גם לאמת כל חתימה באופן אישי באמצעות קריאה DigitalSignature.is_valid. חתימה לא יכולה לחזור לתוקף מסיבות רבות, למשל המסמך השתנה מאז החתימה או האישור הופסק. בנוסף, ניתן לגשת גם לפרטים נוספים של החתימה. מדגם הקוד להלן מראה כיצד לאמת כל חתימה במסמך ולהציג מידע בסיסי על החתימה. ניתן להוריד קובץ תבנית של דוגמא זו כאן.

מסמך Word

DigitalSignatureUtil הכיתה מספקת שיטות לחתימה. DigitalSignatureUtil.sign מסמך מקור באמצעות CertificateHolder עם חתימה דיגיטלית וכותב מסמך חתום לזרם היעד

להלן דוגמאות כיצד לחתום על מסמך פשוט

להלן דוגמאות כיצד לחתום על מסמך מוצפן

מסמך Word עם קו חתימה

ניתן לחתום על מסמך מקור באמצעות CertificateHolder ו SignOptions עם חתימה דיגיטלית וכותב מסמך חתום לקובץ היעד. שימוש SignOptions מחלקה אתה יכול לציין אפשרויות לחתימה. להלן דוגמה: כיצד ליצור קו חתימה חדש ולחתום מסמך

להלן דוגמה: כיצד לשנות את קו החתימה הקיים ואת מסמך הסימנים

מסמך Word באמצעות ספק חתימה Identifier

להלן דוגמה מראה כיצד לחתום על מסמך Word באמצעות מזהה ספק חתימה. ספק השירות הקריפטוגרפי (CSP) הוא מודול תוכנה עצמאי אשר למעשה מבצע אלגוריתמי הצפנה עבור אימות, סיבולת והצפנה. MS Office שומרת לעצמה את הערך של {00000000-0000-0000-0000-0000-0000-0000-0000 0000-000000 000 000 000 000 000 000 $) עבור ספק החתימה ברירת המחדל שלה.

ליצור חתימה חדשה מסמך Sign Word באמצעות ספק Identifier

להלן דוגמאות כיצד ליצור קו חתימה ולחתום מסמך Word באמצעות מזהה ספק חתימה.

להעריך מחדש את ערך החתימה הדיגיטלי

Aspose.Words כמו כן, מספק את היכולת לשחזר את ערך החתימה הדיגיטלי מ מסמך חתום דיגיטלית כמערך ע"י שימוש במערך ע"י שימוש. SignatureValue רכוש.

הדוגמה הבאה של הקוד מראה כיצד להשיג את ערך החתימה הדיגיטלי כמערך עוטה ממסמכים:

doc = aw.Document(MY_DIR + "Digitally signed.docx")

for digital_signature in doc.digital_signatures:
    signature_value = base64.b64encode(digital_signature.signature_value)
    print(f"Base64 signature value is: {signature_value}")