PowerPoint 中的数字签名
Contents
[
Hide
]
Digital certificate 用于创建受密码保护的 PowerPoint 演示文稿,并标记为由特定组织或个人创建。可以通过联系授权机构——证书颁发机构来获取数字证书。将数字证书安装到系统后,可通过 文件 → 信息 → 保护演示文稿 为演示文稿添加数字签名:
演示文稿可能包含多个数字签名。数字签名添加到演示文稿后,PowerPoint 中会出现一条特殊信息:
要对演示文稿进行签名或检查演示文稿签名的真实性,Aspose.Slides API 提供了DigitalSignature 类、DigitalSignatureCollection 类以及Presentation.getDigitalSignatures 方法。目前,仅在 PPTX 格式中支持数字签名。
从 PFX 证书添加数字签名
下面的代码示例演示如何使用 PFX 证书添加数字签名:
- 打开 PFX 文件并将 PFX 密码传递给DigitalSignature 对象。
- 将创建的签名添加到演示文稿对象。
// 打开演示文稿文件
var pres = new aspose.slides.Presentation();
try {
// 使用 PFX 文件和 PFX 密码创建 DigitalSignature 对象
var signature = new aspose.slides.DigitalSignature("testsignature1.pfx", "testpass1");
// 对新数字签名添加注释
signature.setComments("Aspose.Slides digital signing test.");
// 将数字签名添加到演示文稿
pres.getDigitalSignatures().add(signature);
// 保存演示文稿
pres.save("SomePresentationSigned.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
pres.dispose();
}
现在可以检查演示文稿是否已进行数字签名且未被修改:
// 打开演示文稿
var pres = new aspose.slides.Presentation("SomePresentationSigned.pptx");
try {
if (pres.getDigitalSignatures().size() > 0) {
var allSignaturesAreValid = true;
console.log("Signatures used to sign the presentation: ");
// 检查所有数字签名是否有效
for (let i = 0; i < pres.getDigitalSignatures().size(); i++) {
let signature = pres.getDigitalSignatures().get_Item(i);
console.log((((signature.getComments() + ", ") + signature.getSignTime().toString()) + " -- ") + (signature.isValid() ? "VALID" : "INVALID"));
allSignaturesAreValid &= signature.isValid();
}
if (allSignaturesAreValid) {
console.log("Presentation is genuine, all signatures are valid.");
} else {
console.log("Presentation has been modified since signing.");
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
常见问题
我可以删除文件中已有的签名吗?
可以。数字签名集合支持删除单个项目和完整清除;保存文件后,演示文稿将不再包含任何签名。
签名后文件会变成“只读”吗?
不会。签名只能保留完整性和作者信息,但不会阻止编辑。如需限制编辑,可结合“只读"或密码使用。
签名在不同版本的 PowerPoint 中能正确显示吗?
签名是为 OOXML(PPTX)容器创建的。支持 OOXML 签名的现代 PowerPoint 版本能够正确显示此类签名的状态。