Thêm Chữ ký Số vào Bản trình chiếu trong PHP
Giới thiệu
Digital certificate được sử dụng để tạo một bản trình chiếu PowerPoint có bảo vệ bằng mật khẩu, được đánh dấu là được tạo bởi một tổ chức hoặc cá nhân cụ thể. Digital certificate có thể được lấy bằng cách liên hệ với một tổ chức được ủy quyền - một nhà cấp chứng chỉ. Sau khi cài đặt digital certificate vào hệ thống, nó có thể được dùng để thêm chữ ký số vào bản trình chiếu qua File -> Info -> Protect Presentation:
Bản trình chiếu có thể chứa nhiều hơn một chữ ký số. Sau khi chữ ký số được thêm vào bản trình chiếu, một thông báo đặc biệt sẽ xuất hiện trong PowerPoint:
Để ký bản trình chiếu hoặc kiểm tra tính xác thực của các chữ ký trong bản trình chiếu, Aspose.Slides API cung cấp lớp DigitalSignature , lớp DigitalSignatureCollection và phương thức Presentation::getDigitalSignatures . Hiện tại, chữ ký số chỉ được hỗ trợ cho định dạng PPTX.
Thêm Chữ ký Số từ Chứng chỉ PFX
Mẫu mã dưới đây minh họa cách thêm chữ ký số từ một chứng chỉ PFX:
- Mở tệp PFX và truyền mật khẩu PFX cho đối tượng DigitalSignature .
- Thêm chữ ký đã tạo vào đối tượng bản trình chiếu.
# Mở tệp bản trình chiếu
$pres = new Presentation();
try {
# Tạo đối tượng DigitalSignature với tệp PFX và mật khẩu PFX
$signature = new DigitalSignature("testsignature1.pfx", "testpass1");
# Thêm chú thích cho chữ ký số mới
$signature->setComments("Aspose.Slides digital signing test.");
# Thêm chữ ký số vào bản trình chiếu
$pres->getDigitalSignatures()->add($signature);
# Lưu bản trình chiếu
$pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Bây giờ có thể kiểm tra xem bản trình chiếu đã được ký số và không bị chỉnh sửa hay chưa:
# Mở bản trình chiếu
$pres = new Presentation("SomePresentationSigned.pptx");
try {
if (java_values($pres->getDigitalSignatures()->size()) > 0) {
$allSignaturesAreValid = true;
echo("Signatures used to sign the presentation: ");
# Kiểm tra xem tất cả chữ ký số có hợp lệ không
foreach($pres->getDigitalSignatures() as $signature) {
echo($signature->getComments() . ", " . $signature->getSignTime()->toString() . " -- " . $signature->isValid() ? "VALID" : "INVALID");
$allSignaturesAreValid &= $signature->isValid();
}
if ($allSignaturesAreValid) {
echo("Presentation is genuine, all signatures are valid.");
} else {
echo("Presentation has been modified since signing.");
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Câu hỏi thường gặp
Tôi có thể xóa các chữ ký hiện có khỏi tệp không?
Đúng. Bộ sưu tập chữ ký số hỗ trợ removing individual items và clearing it entirely ; sau khi bạn lưu tệp, bản trình chiếu sẽ không còn chữ ký nào.
Tệp có trở thành “read-only” sau khi ký không?
Không. Chữ ký bảo vệ tính toàn vẹn và quyền tác giả nhưng không ngăn chặn việc chỉnh sửa. Để hạn chế chỉnh sửa, kết hợp nó với “Read-only” or a password.
Chữ ký sẽ hiển thị đúng trong các phiên bản PowerPoint khác nhau không?
Chữ ký được tạo cho container OOXML (PPTX). Các phiên bản PowerPoint hiện đại hỗ trợ chữ ký OOXML sẽ hiển thị trạng thái của các chữ ký này một cách chính xác.