امنیت و امضاها
امنیت و امضاها
Aspose.PDF FOSS for .NET از امضای دیجیتال PDF، رمزنگاری مبتنی بر گواهینامه و هندلرهای امنیتی سفارشی پشتیبانی میکند. برای جریانهای کاری امضا PdfSigner و برای مدیریت گواهینامه PdfCertificate را استفاده کنید.
امضای یک سند
PdfSigner یک امضای دیجیتال را بر روی PDF با استفاده از گواهی PFX اعمال میکند.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");تأیید امضاها
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");امضای با ظاهر بصری
signer.SignWithAppearance(doc, cert, signatureField, appearance);مدیریت گواهی
PdfCertificate گواهیها را از فایلهای PFX یا فایلهای رمزگذاریشده با DER بارگذاری میکند.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");رمزنگاری مبتنی بر گواهی
CertificateEncryptionOptions یک PDF را رمزگذاری میکند تا فقط دارندگان گواهینامههای مشخص بتوانند آن را باز کنند.
var options = new CertificateEncryptionOptions(cert);دستگیرههای امنیتی سفارشی
ICustomSecurityHandler را برای منطق رمزنگاری و رمزگشایی سفارشی پیادهسازی کنید.
public class MyHandler : ICustomSecurityHandler
{
public void Initialize(EncryptionParameters parameters) { }
public byte[] CalculateEncryptionKey() { /* ... */ return Array.Empty<byte>(); }
public byte[] GetUserKey() { /* ... */ return Array.Empty<byte>(); }
public byte[] GetOwnerKey() { /* ... */ return Array.Empty<byte>(); }
public bool IsOwnerPassword(string password) { /* ... */ return false; }
public bool IsUserPassword(string password) { /* ... */ return false; }
}اطلاعات الگوریتم امضا
SignatureAlgorithmInfo الگوریتم مورد استفاده در یک امضای موجود را توصیف میکند.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());نکات و بهترین شیوهها
- همیشه اسناد را به عنوان گام نهایی امضا کنید — هر تغییری پس از امضا، امضا را نامعتبر میکند.
- از فایلهای PFX با گذرواژههای قوی برای ذخیرهسازی گواهی استفاده کنید.
- پس از بارگذاری سند، امضاها را برای تشخیص دستکاری بررسی کنید.
- رمزنگاری مبتنی بر گواهی نیاز به گواهی کلید عمومی گیرنده دارد.
ICustomSecurityHandlerرا فقط زمانی پیادهسازی کنید که رمزنگاری استاندارد کافی نباشد.
مسائل رایج
| مسئله | دلیل | راهحل |
|---|---|---|
| امضای نشان داده شده نامعتبر است | سند پس از امضا تغییر یافته است | پس از اتمام تمام تغییرات، دوباره امضا کنید |
| بارگذاری PFX ناموفق است | رمز عبور اشتباه یا فایل خراب | رمز عبور و صحت فایل را بررسی کنید |
| رمزنگاری مانع باز شدن میشود | رمز مالک ارائه نشده است | از رمز مالک یا کاربر صحیح استفاده کنید |
سوالات متداول
کدام الگوریتمهای امضا پشتیبانی میشوند؟
RSA با SHA-256، SHA-384 و SHA-512 معمولاً پشتیبانی میشود. الگوریتمهای موجود به نوع کلید گواهی بستگی دارد.
آیا میتوانم چند امضا اضافه کنم؟
بله. هر امضا به یک فیلد امضای جداگانه در سند اعمال میشود.
آیا امضا نیاز به گواهی تجاری دارد؟
نه. گواهیهای خودامضا برای تست کار میکنند. برای تولید، از یک گواهی از یک CA معتبر استفاده کنید.
خلاصه مرجع API
| Class / Method | Description |
|---|---|
PdfSigner | امضا و تأیید اسناد PDF |
PdfSigner.Sign | اعمال امضای دیجیتال |
PdfSigner.Verify | بررسی اعتبار امضا |
PdfSigner.SignWithAppearance | امضا با فیلد امضای بصری |
PdfCertificate | بارگذار گواهی برای فرمتهای PFX و DER |
PdfCertificate.FromPfx | بارگذاری از فایل PFX با رمز عبور |
PdfCertificate.FromDerFiles | بارگذاری از فایلهای کدگذاری شده با DER |
CertificateEncryptionOptions | رمزنگاری PDF مبتنی بر گواهی |
ICustomSecurityHandler | رابط برای رمزنگاری/رمزگشایی سفارشی |
EncryptionParameters | پارامترهای پاس داده شده به هندلرهای امنیتی سفارشی |
SignatureAlgorithmInfo | فراداده درباره الگوریتم امضا |