2011-08-25 89 views
3

是否可以使用對稱加密來加密pdf的內容?和雜技演員等自動支持解密?使用C#加密PDF文檔

我需要在c#/ .net中的api來加密文件的內容!

類方面 邁克爾

+0

任何文件都可以被加密或解密。如果您希望Acrobat能夠自動解密,那麼您的選項僅限於Acrobat提供的任何內容。 Acrobat文檔說的是什麼? – rossum

+0

所以沒有每個「好」查看器可以處理的「pdf標準」? – Michael

+0

定義「好」的查看器。我只知道有3個Adobe PDF瀏覽器試圖實現Adobe Acrobat支持的大部分功能。 –

回答

0

你不想手動做這種事情,而要使用PDF庫。

我不知道是否有那些支持本機/ Adob​​e PDF加密,但你可以看看some of them並檢查它們的功能。

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

+0

謝謝!沒有證書可能嗎? – Michael

+0

不能肯定地說,但是,如果你不使用證書,你將如何提供密鑰? – Jodrell

+0

@Michael - 證書是Adobe Acrobat處理其加密的方式。我可以想象,pdf查看器市場中的3-4個主要參與者將以類似的方式實現它。 –

1

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

PDF參考文獻定義了兩種標準的加密算法:RC4和AES。兩種算法都是對稱的。 RC4使用長度爲40到128位的密鑰。 AES使用128位密鑰(256密鑰即將成爲新標準)。

加密PDF可以完全鎖定(您和其他人無法在無密碼的情況下打開它們)或者只是「保護」不做任何修改(任何人都可以在沒有任何密碼的情況下打開它們,並可以獲得行爲良好的觀衆不允許改變它們)。

請看看示範如何encrypt PDF document with AES 128 bit

聲明:我爲圖書館供應商Bit Miracle工作。

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); 
}