Securitate și semnături
Securitate și semnături
Aspose.PDF FOSS pentru .NET acceptă semnături digitale PDF, criptare bazată pe certificate și manipulatoare de securitate personalizate. Utilizați PdfSigner pentru fluxurile de lucru de semnare și PdfCertificate pentru gestionarea certificatelor.
Semnarea unui document
PdfSigner aplică o semnătură digitală unui PDF utilizând un certificat PFX.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");Verificarea semnăturilor
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");Semnare cu o aparență vizuală
signer.SignWithAppearance(doc, cert, signatureField, appearance);Gestionarea certificatelor
PdfCertificate încarcă certificate din fișiere PFX sau fișiere codificate DER.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");Criptare bazată pe certificat
CertificateEncryptionOptions criptează un PDF astfel încât doar deținătorii de certificat specificați să îl poată deschide.
var options = new CertificateEncryptionOptions(cert);Manipulatoare de securitate personalizate
Implementați ICustomSecurityHandler pentru logica de criptare și decriptare personalizată.
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; }
}Informații despre algoritmul de semnătură
SignatureAlgorithmInfo descrie algoritmul utilizat într-o semnătură existentă.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());Sfaturi și bune practici
- Semnați întotdeauna documentele ca ultim pas — orice modificare după semnare invalidează semnătura.
- Utilizați fișiere PFX cu parole puternice pentru stocarea certificatelor.
- Verificați semnăturile după încărcarea unui document pentru a detecta manipularea.
- Criptarea bazată pe certificat necesită certificatul cheii publice al destinatarului.
- Implementați
ICustomSecurityHandlernumai când criptarea standard este insuficientă.
Probleme comune
| Issue | Cause | Fix |
|---|---|---|
| Semnătura apare ca invalidă | Document modificat după semnare | Semnați din nou după ce toate modificările sunt finalizate |
| Încărcarea PFX eșuează | Parolă greșită sau fișier corupt | Verificați parola și integritatea fișierului |
| Criptarea împiedică deschiderea | Parola de proprietar nu a fost furnizată | Utilizați parola corectă de proprietar sau de utilizator |
Întrebări frecvente
Ce algoritmi de semnătură sunt acceptaţi?
RSA cu SHA-256, SHA-384 și SHA-512 sunt susținute în mod obișnuit. Algoritmii disponibili depind de tipul cheii certificatului.
Pot adăuga mai multe semnături?
Da. Fiecare semnătură este aplicată unui câmp de semnătură separat în document.
Semnarea necesită un certificat comercial?
Nu. Certificatele auto-semnat funcționează pentru testare. Pentru producție, folosiți un certificat de la o autoritate de certificare de încredere.
Sumar al referinței API
| Class / Method | Description |
|---|---|
PdfSigner | Semnați și verificați documente PDF |
PdfSigner.Sign | Aplicați o semnătură digitală |
PdfSigner.Verify | Verificați valabilitatea semnăturii |
PdfSigner.SignWithAppearance | Semnați cu un câmp de semnătură vizuală |
PdfCertificate | Încărcător de certificate pentru formatele PFX și DER |
PdfCertificate.FromPfx | Încărcați dintr-un fișier PFX cu parolă |
PdfCertificate.FromDerFiles | Încărcați din fișiere codificate DER |
CertificateEncryptionOptions | Criptare PDF bazată pe certificat |
ICustomSecurityHandler | Interfață pentru criptare/decriptare personalizată |
EncryptionParameters | Parametri transmiși către manipulatoare de securitate personalizate |
SignatureAlgorithmInfo | Metadate despre algoritmul unei semnături |