Dodawanie podpisów cyfrowych do prezentacji w Pythonie
Wstęp
Certyfikat cyfrowy jest używany do tworzenia prezentacji PowerPoint zabezpieczonej hasłem, oznaczonej jako utworzonej przez określoną organizację lub osobę. Certyfikat cyfrowy można uzyskać, kontaktując się z upoważnioną organizacją – urzędem certyfikacji. Po zainstalowaniu certyfikatu cyfrowego w systemie można go używać do dodania podpisu cyfrowego do prezentacji przez Plik -> Informacje -> Ochrona prezentacji:
Prezentacja może zawierać więcej niż jeden podpis cyfrowy. Po dodaniu podpisu cyfrowego do prezentacji w programie PowerPoint pojawi się specjalna wiadomość:
Aby podpisać prezentację lub sprawdzić autentyczność podpisów prezentacji, Aspose.Slides API udostępnia DigitalSignature klasę, DigitalSignatureCollection klasę i Presentation.digital_signatures właściwość. Obecnie podpisy cyfrowe są obsługiwane wyłącznie dla formatu PPTX.
Dodaj podpis cyfrowy z certyfikatu PFX
Poniższy przykład kodu pokazuje, jak dodać podpis cyfrowy z certyfikatu PFX:
- Otwórz plik PFX i przekaż hasło PFX do obiektu DigitalSignature.
- Dodaj utworzony podpis do obiektu prezentacji.
import aspose.slides as slides
with slides.Presentation() as pres:
# Utwórz obiekt DigitalSignature przy użyciu pliku PFX i hasła PFX
signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")
# Skomentuj nowy podpis cyfrowy
signature.comments = "Aspose.Slides digital signing test."
# Dodaj podpis cyfrowy do prezentacji
pres.digital_signatures.add(signature)
# zapisz prezentację
pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)
Teraz można sprawdzić, czy prezentacja została podpisana cyfrowo i nie została zmodyfikowana:
# Otwórz prezentację
with slides.Presentation("SomePresentationSigned.pptx") as pres:
if len(pres.digital_signatures) > 0:
allSignaturesAreValid = True
print("Signatures used to sign the presentation: ")
# Sprawdź, czy wszystkie podpisy cyfrowe są ważne
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.")
FAQ
Czy mogę usunąć istniejące podpisy z pliku?
Tak. Kolekcja podpisów cyfrowych umożliwia usuwanie pojedynczych elementów oraz całkowite czyszczenie; po zapisaniu pliku prezentacja nie będzie zawierała żadnych podpisów.
Czy plik staje się „tylko do odczytu” po podpisaniu?
Nie. Podpis zachowuje integralność i autorstwo, ale nie blokuje edycji. Aby ograniczyć edycję, połącz go z opcją “Read-only” or a password.
Czy podpis będzie wyświetlany prawidłowo w różnych wersjach PowerPointa?
Podpis jest tworzony dla kontenera OOXML (PPTX). Nowoczesne wersje PowerPointa, które obsługują podpisy OOXML, wyświetlają status takich podpisów prawidłowo.