امضاهای دیجیتال
امضاهای دیجیتال
Aspose.Words FOSS برای .NET میتواند امضاهای دیجیتالی را که قبلاً به یک .docx سند از طریق Aspose.Words.DigitalSignatures فضای نام. این نسخه شامل امضا verification — خواندن فرادادهٔ امضا، بررسی اعتبار، و بررسی گواهی امضا کننده. این نسخه قابلیت ایجاد امضاهای جدید روی یک سند را شامل نمیشود.
خواندن امضاها از یک سند
هر Document یک ویژگی DigitalSignatures را ارائه میدهد که یک DigitalSignatureCollection برمیگرداند — یک مجموعهٔ فقط-خواندنی و قابل شمارش از اشیای DigitalSignature که قبلاً در فایل بارگذاری شده وجود دارند. DigitalSignatureUtil.LoadSignatures(fileName) (و بارگذاری LoadSignatures(stream)) امضاها را مستقیماً از یک فایل یا جریان میخواند بدون آنکه سند کامل را در یک شیء Document بارگذاری کند، که وقتی فقط نیاز به بررسی وضعیت امضا دارید مفید است. ویژگی IsValid مجموعه گزارش میدهد که آیا هر امضای موجود معتبر است یا نه، و Count تعداد امضاهای یافت شده را گزارش میکند.
بررسی یک امضای منفرد
هر DigitalSignature IsValid را ارائه میدهد (اینکه آیا امضا از نظر cryptographic معتبر است)، 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.
نکات و بهترین شیوهها
- به جای باز کردن کامل
Document، وقتی فقط نیاز به بررسی این دارید که آیا فایلی امضا شده است، ازDigitalSignatureUtil.LoadSignatures()استفاده کنید — این کار هزینهٔ تجزیهٔ کل بدنهٔ سند را جلوگیری میکند. - ابتدا
DigitalSignatureCollection.IsValidرا بررسی کنید تا به سرعت پاس/فیل را تعیین کنید قبل از این که مقادیر فردیDigitalSignature.IsValidرا مرور کنید. SignatureTypeبه شما میگوید کدام مکانیزم امضا، امضا را تولید کرده است (CryptoApiدر مقابلXmlDsig)؛ این موضوع بر این که کدام فیلدهای گواهی معنیدار هستند، تأثیر میگذارد.- در هر خط لولهٔ خودکار دریافت سند،
IsValid == falseرا بهعنوان یک وضعیت شکست سخت در نظر بگیرید — متادیتای امضا را از یک امضای نامعتبر بهعنوان قابل اعتماد نشان ندهید.
مشکلات رایج
| مشکل | دلیل | رفع |
|---|---|---|
DigitalSignatures.Count برابر ۰ بر روی یک .docx امضاشده است | فایل توسط ابزاری که بخش امضا را حذف کرد، دوباره ذخیره شد | در برابر فایل اصلی امضاشده بررسی کنید، نه نسخهای که دوباره ذخیره شده است |
امضا گزارش میدهد IsValid = false | محتوی سند پس از امضا تغییر کرده است، یا گواهی غیرقابل اعتماد/منقضی است | بهعنوان نامعتبر در نظر بگیرید؛ سعی نکنید "repair" امضا را انجام دهید |
| تلاش برای امضای یک سند هیچ اثری ندارد | امضا در این نسخهٔ FOSS پیادهسازی نشده است | از Aspose.Words برای .NET (commercial) در فرآیندهای امضای الکترونیکی استفاده کنید |
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 | نوع شمارشی: CryptoApi, XmlDsig, Unknown |
CertificateHolder | محافظت میکند از امضای X509Certificate2 |