Bảo mật và Chữ ký

Bảo mật và Chữ ký

Aspose.PDF FOSS for .NET hỗ trợ chữ ký số PDF, mã hóa dựa trên chứng chỉ và các trình xử lý bảo mật tùy chỉnh. Sử dụng PdfSigner cho quy trình ký và PdfCertificate cho quản lý chứng chỉ.


Ký một tài liệu

PdfSigner áp dụng chữ ký số cho PDF bằng chứng chỉ PFX.

var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");

Xác minh chữ ký

var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");

Ký với giao diện trực quan

signer.SignWithAppearance(doc, cert, signatureField, appearance);

Quản lý chứng chỉ

PdfCertificate tải chứng chỉ từ các tệp PFX hoặc các tệp được mã hoá DER.

// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");

// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");

Mã hóa dựa trên chứng chỉ

CertificateEncryptionOptions mã hóa một PDF để chỉ những người nắm giữ chứng chỉ được chỉ định mới có thể mở nó.

var options = new CertificateEncryptionOptions(cert);

Trình xử lý bảo mật tùy chỉnh

Triển khai ICustomSecurityHandler cho logic mã hóa và giải mã tùy chỉnh.

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; }
}

Thông tin thuật toán chữ ký

SignatureAlgorithmInfo mô tả thuật toán được sử dụng trong một chữ ký hiện có.

var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());

Mẹo và Thực hành tốt nhất

  • Luôn ký tài liệu ở bước cuối cùng — bất kỳ sửa đổi nào sau khi ký sẽ làm mất hiệu lực chữ ký.
  • Sử dụng tệp PFX với mật khẩu mạnh để lưu trữ chứng chỉ.
  • Xác minh chữ ký sau khi tải tài liệu để phát hiện việc giả mạo.
  • Mã hóa dựa trên chứng chỉ yêu cầu chứng chỉ khóa công khai của người nhận.
  • Triển khai ICustomSecurityHandler chỉ khi mã hóa tiêu chuẩn không đủ.

Các vấn đề thường gặp

IssueCauseFix
Chữ ký hiển thị là không hợp lệTài liệu đã được sửa đổi sau khi kýKý lại sau khi mọi sửa đổi đã hoàn tất
Việc tải PFX thất bạiMật khẩu sai hoặc tệp bị hỏngXác minh mật khẩu và tính toàn vẹn của tệp
Mã hóa ngăn không mởMật khẩu chủ sở hữu chưa được cung cấpSử dụng mật khẩu chủ sở hữu hoặc người dùng đúng

Câu hỏi thường gặp

Các thuật toán ký nào được hỗ trợ?

RSA với SHA-256, SHA-384 và SHA-512 thường được hỗ trợ. Các thuật toán khả dụng phụ thuộc vào loại khóa của chứng chỉ.

Tôi có thể thêm nhiều chữ ký không?

Có. Mỗi chữ ký được áp dụng vào một trường chữ ký riêng trong tài liệu.

Việc ký có yêu cầu chứng chỉ thương mại không?

No. Chứng chỉ tự ký hoạt động cho việc thử nghiệm. Đối với môi trường sản xuất, hãy sử dụng một chứng chỉ từ một CA đáng tin cậy.


Tóm tắt Tham chiếu API

Class / MethodDescription
PdfSignerKý và xác thực tài liệu PDF
PdfSigner.SignÁp dụng chữ ký số
PdfSigner.VerifyKiểm tra tính hợp lệ của chữ ký
PdfSigner.SignWithAppearanceKý bằng trường chữ ký trực quan
PdfCertificateTrình tải chứng chỉ cho các định dạng PFX và DER
PdfCertificate.FromPfxTải từ tệp PFX có mật khẩu
PdfCertificate.FromDerFilesTải từ các tệp được mã hoá DER
CertificateEncryptionOptionsMã hoá PDF dựa trên chứng chỉ
ICustomSecurityHandlerGiao diện cho mã hoá/giải mã tùy chỉnh
EncryptionParametersTham số được truyền cho trình xử lý bảo mật tùy chỉnh
SignatureAlgorithmInfoSiêu dữ liệu về thuật toán của chữ ký

Xem thêm

 Tiếng Việt