Залог и подписи

Залог и подписи

Aspose.PDF FOSS for .NET supports PDF digital signatures, certificate-based използване на криптиране и персонализирани устройства за управление на сигурността. 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.Неправилна парола или повреден файлПроверете паролата и целостта на файла.
Шифроването пречи на отварянето.Парола на собственика не е предоставена.Използвайте правилната собственичка или парола на потребителя.

FAQ

Какви алгоритми за подписване се подкрепят?

RSA с SHA-256, Sha-384 и Shaa-512 обикновено се поддържат. Наличните алгоритми зависят от типа на ключа на сертификата.

Мога ли да добавя няколко подписа?

Да. Всеки подпис се прилага към отделно поле за подписа в документа.

За подписването на документа е необходим ли търговски сертификат?

Не, самоподписаните сертификати работят за тестване.За производство използвайте сертификат от доверен сертифициращ орган.


Снимка на API референтна информация

Клас / методОписание на състоянието
PdfSignerПодписване и проверка на PDF документи
PdfSigner.SignПрилагане на цифров подпис
PdfSigner.VerifyПроверете валидността на подписването.
PdfSigner.SignWithAppearanceПодпис с поле за визуален подпис
PdfCertificateЗареждащ сертификат за формати PFX и DER
PdfCertificate.FromPfxЗареждане от PFX файл с парола
PdfCertificate.FromDerFilesЗареждане от DER-кодирани файлове
CertificateEncryptionOptionsШифроване на PDF, основано на сертификат
ICustomSecurityHandlerИнтерфейс за персонализирано криптиране/дешифриране
EncryptionParametersПараметри, предавани на персонализирани оператори за сигурност
SignatureAlgorithmInfoМетаданни за алгоритъма на подпис

Вижте също:

 Български