Thêm Chữ ký Kỹ thuật số vào Bản trình bày với Python
Giới thiệu
Chứng chỉ kỹ thuật số được sử dụng để tạo một bản trình bày PowerPoint được bảo vệ bằng mật khẩu, đánh dấu là được tạo bởi một tổ chức hoặc cá nhân cụ thể. Chứng chỉ kỹ thuật số 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 cơ quan cấp chứng chỉ. Sau khi cài đặt chứng chỉ kỹ thuật số vào hệ thống, nó có thể được sử dụng để thêm chữ ký kỹ thuật số vào bản trình bày thông qua File -> Info -> Protect Presentation:
Bản trình bày có thể chứa nhiều chữ ký kỹ thuật số. Sau khi chữ ký kỹ thuật số được thêm vào bản trình bày, một thông báo đặc biệt sẽ xuất hiện trong PowerPoint:
Để ký bản trình bày hoặc kiểm tra tính xác thực của các chữ ký trên bản trình bày, Aspose.Slides API cung cấp lớp DigitalSignature , lớp DigitalSignatureCollection và thuộc tính Presentation.digital_signatures . Hiện tại, chữ ký kỹ thuật số chỉ được hỗ trợ cho định dạng PPTX.
Thêm Chữ ký Kỹ thuật số từ Chứng chỉ PFX
Mẫu mã dưới đây trình bày cách thêm chữ ký kỹ thuật 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 bày.
import aspose.slides as slides
with slides.Presentation() as pres:
# Tạo đối tượng DigitalSignature với tệp PFX và mật khẩu PFX
signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")
# Ghi chú chữ ký kỹ thuật số mới
signature.comments = "Aspose.Slides digital signing test."
# Thêm chữ ký kỹ thuật số vào bản trình bày
pres.digital_signatures.add(signature)
# Lưu bản trình bày
pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)
Bây giờ có thể kiểm tra xem bản trình bày đã được ký kỹ thuật số và chưa bị sửa đổi hay không:
# Mở bản trình bày
with slides.Presentation("SomePresentationSigned.pptx") as pres:
if len(pres.digital_signatures) > 0:
allSignaturesAreValid = True
print("Signatures used to sign the presentation: ")
# Kiểm tra xem tất cả chữ ký kỹ thuật số có hợp lệ không
for signature in pres.digital_signatures :
print(signature.certificate.subject_name.name + ", "
+ signature.sign_time.strftime("yyyy-MM-dd HH:mm") + " -- " + "VALID" if signature.is_valid else "INVALID")
allSignaturesAreValid = allSignaturesAreValid and signature.is_valid
if allSignaturesAreValid:
print("Presentation is genuine, all signatures are valid.")
else:
print("Presentation has been modified since signing.")
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?
Có. Bộ sưu tập chữ ký kỹ thuật số hỗ trợ removing individual items và clearing it entirely ; sau khi bạn lưu tệp, bản trình bày sẽ không còn chữ ký nào.
Tệp có trở thành “chỉ đọc” sau khi ký không?
Không. Một chữ ký bảo vệ tính toàn vẹn và quyền tác giả nhưng không ngăn 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.