使用C#加密PDF文档

时间:2011-08-25 11:32:12

标签: c# pdf encryption

是否可以使用对称加密来加密pdf的内容?并且acrobat等会自动支持解密吗?

我需要在c#/ .net中使用api来加密文件的内容!

亲切的问候 迈克尔

4 个答案:

答案 0 :(得分:1)

Docotic.Pdf library可以为您加密或解密PDF文件。

PDF Reference定义了两种标准加密算法:RC4和AES。两种算法都是对称的。 RC4使用长度为40到128位的密钥。 AES使用128位密钥(256个密钥很快就会成为新标准)。

加密的PDF可以完全锁定(你和其他任何人都无法在没有密码的情况下打开它们)或只是“受到保护”的修改(任何人都可以在没有任何密码的情况下打开它们,并且表现良好的观众赢了'允许改变它们。)

请查看展示如何encrypt PDF document with AES 128 bit

的示例

免责声明:我为图书馆的供应商Bit Miracle工作。

答案 1 :(得分:1)

Atalasoft PDF library(dotImage的一部分)可以为您处理PDF文档的加密或解密(免责声明,我为Atalasoft工作并编写了库)。代码非常简单:

public void EncryptPdf(Stream input, Stream output, string userPassword, string ownerPassword)
{
    if (input == output) throw new ArgumentExeption("input", "input and output must be different");
    PdfDocument doc = new PdfDocument(input);
    // at this point if you set doc.Permissions, you can fine-control what can be
    // done to the document.  If userPassword is null, then the document can be opened
    // without a password prompt, but will be restricted to the permissions.
    // Permissions includes things like Printing, Modifying, Copying Text etc.
    doc.Save(userPassword, ownerPassword, output);
}

答案 2 :(得分:0)

您不希望手动执行此类操作,而是希望使用PDF库。

我不知道是否有那些支持本机/ Adob​​e PDF加密但是你可以查看some of them并检查它们的功能。

答案 3 :(得分:0)

是的,使用证书。

http://help.adobe.com/en_US/Acrobat/9.0/Standard/WS58a04a822e3e50102bd615109794195ff-7d6c.w.html

如果您已经为Acrobat的全功能版本付费,可以使用其JavaScript界面​​为您完成工作(although it looks an effort in itself。)

似乎iTextSharp可以使用或不使用证书来实现,并且是开源的,因此可能是一个不错的选择。他们当然要提出将这本书作为一种好资源。这是我看过的第一个第三方图书馆,其他供应商可能会提供这些功能。

但是,如果你想自动化这个过程并且你不想向Adobe或其他第三方支付费用,我希望有人提供更完整的答案。

以下是definition of the PDF file format的链接。