2011-04-19 27 views
1

是的,我知道這個問題是一種滿口的一種......如何使用Quartz以mmap()方式「加載」加密的(AES-256)PDF文件?

我有一個加密的(AES-256,使用CommonCrypto/OpenSSL)的磁盤上的PDF文件。 我想使用Quartz'CGPDF ...函數來渲染PDF,並發現可以使用CGDataProvider創建CGPDFDocument。

我想知道是否有可能爲CGDataProvider創建回調函數,只解密和加載Quartz的PDF渲染器需要的內存塊。我寧願不將解密的文件從安全/隱私的角度寫入磁盤。

任何想法?

希望我可以用計算器的社區:)

回答

0

我們最終做的是使用CGDataProviderCreateDirect API,並實現了C回調來解密部分加密的PDF數據,該數據使用[NSData dataWithContentsOfMappedFile:](它在引擎蓋下使用mmap())加載。這使我們能夠渲染巨大的加密PDF,並且加載時間短,內存使用率低。

+0

我會對實現的一些示例代碼感興趣。尤其是解密過程的回調和塊對齊。謝謝! – BastiBen 2012-10-23 13:18:05

+0

你還在這裏活躍嗎?你能否提供一些源代碼?如果不是,至少給一些提示如何做到這一點? – Marc 2013-03-17 21:02:37

0

如果它足夠小,你可以把它放在一個NSData的輸入開始的「恍然大悟」試&錯誤 - 解密它的飛行,並將其存儲在記憶。如果它更大,事情就會更加困難。最終,人們也可以解密你的二進制文件並從中提取AES密鑰。

PDF的密碼保護可能會增加一個小的安全層,但它也很容易規避。

+0

感謝您的回答。我忘記了我的問題,我們已經自己想出了一個答案。不管怎麼說,還是要謝謝你! – 2011-08-11 09:04:48

相關問題