我正在编写分析和分析PDF的代码,目前正在处理文档中的加密。我无法从规范中了解如何在两种可能的加密方法之间做出选择。PDF规范中的一些细节..。加密字典的V字段支持以下值:
1=“算法1:使用RC4或AES算法加密数据”,载于7.6.2,“通用加密算法”,加密密钥长度为40位;见下文。 2=(PDF1.4)“算法1:使用RC4或AES算法加密数据”,载于7.6.2“通用加密算法”,但允许加密密钥长度大于40位。
Length字段定义为:
(可选;PDF 1.4;只有V为2或3)加密密钥的长度,以位为单位。数值应为8的倍数,在40至128范围内。默认值: 40。
第7.6.2部分列出了两种可能的加密算法:
在PDF文件中加密数据时,应使用下列算法之一: ·一种称为RC4的专有加密算法。..。 ·AES (高级加密标准)算法(从PDF1.6开始)。..。加密后的数据长度被舍入为块大小的倍数,固定为16字节.
我有一个V= 2,长度= 128的样本文档,它是PDF1.6。我曾假设AES用于PDF1.6中的文档,但是使用AES解密失败(尤其是因为流不是128位长的倍数)。使用RC4解密成功。
我的问题是,在开始处理文档时,我的代码如何知道如何初始化RC4解密?我在加密字典中没有看到任何指定使用哪种方法的内容。
发布于 2018-12-25 21:08:23
我认为这里的规范有点混乱。
2=(PDF1.4)“算法1:使用RC4或AES算法加密数据”,载于7.6.2,“一般加密算法,”
是一个引用,用于描述RC4和AES加密的文档中的某个部分,但实际上需要/V 4才能启用RC4加密。
4=(PDF1.5)安全处理程序使用CF、StmF和StrF条目指定的规则在文档中定义加密和解密的使用。
因此,/V 4 (或更高版本)是一个先决条件,从这里您需要进一步查阅/CF /StmF和/StrF条目。
使用基本AES加密的加密字典可能如下所示:
/Encrypt <<
/V 4
/R 4
/StmF /StdCF
/StrF /StdCF
/CF <<
/StdCF <<
/CFM /AESV2
>>
>>
% + other entries /O /U Length etc
>>https://stackoverflow.com/questions/53913102
复制相似问题