/P访问权限标识详细
1-2 保留为0;
3 (版本2) 打印文档
(版本3或者更高)打印文档(可能不是最高级别,取决于bit 12是否被设置)
4 Modify the contents of the document by operations other than those controlled by bits 6, 9, and 11.
通过控制bit 6、bit 9、bit11修改文档内容
5 (版本2)Copy or otherwise extract text and graphics from the document, including extracting text and graphics (in support of accessibility
to users with disabilities or for other purposes).
复制或提取文本和图形从文档,包括提取文本和图形(以支持可访问性受限用户或其他用途)。
(版本3或者更高) Copy or otherwise extract text and graphics from the document by operations other than that controlled by bit10.
通过控制bit 10 复制或提取文本和图形
6 Add or modify text annotations, fill in interactive form fields, and, if bit 4 is also set, create or modify interactive form fields (including signature fields).
添加或修改文本注释,填写交互式表单字段;如果bit 4被设置,创建或修改交互式表单字段(包括签名字段).
7-8 保留 为1;
9 (版本3或者更高) Fill in existing interactive form fields (including
signature fields), even if bit 6 is clear.
填充现有的交互表单字段(包括签名字段),即使 bit 6未设置.
10 (版本3或者更高) Extract text and graphics (in support of accessibility
to users with disabilities or for other purposes).
提取文本和图形(用来支持受限用户的可访问性或其他用途)
11 (版本3或者更高) Assemble the document (insert, rotate, or delete
pages and create bookmarks or thumbnail images), even if bit 4 is clear.
组合文档(插入、旋转或删除页面和创建书签或缩略图)即使bit 4未设置
12 (版本3或者更高) Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this bit is clear (and bit 3 is set), printing is limited to a low-level representation of the appearance, possibly of degraded quality. (See implementation note 25 in Appendix H.)
打印标识。当该位未设置并且bit 3被设置,打印受限。
13-32 (版本3或更高)保留 必须为1;
RC4-128算法
Algorithm part1 Computing an encryption key
1.密码字符串为N字节长度,用以下字符串
<28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08 2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A >
中的32-N个填充至32个字节。如果用户密码为空就全部填充.
2.初始化MD5,并将步骤1的结果输入到MD5函数.
3.通过加密字典中的O进入MD5哈希函数.
4.将P条目作为一个4字节无符号整数的值传递给MD5函数.
5.将文档ID的第一个元素传递给MD5.
6.如果文档metadata没有被加密传递0xFFFFFFFF到MD5函数.
7.结束MD5.
8.连续做50次:从上一个MD5函数的输出的n bytes传递到给MD5函数。其中n由加密字典条目的 length决定(length/8).
9.从最终的MD5输出的前n bytes设置为RC4加密密钥。对于版本2来说,n始终为5,但对于版本3或更高版本来说,取决于加密字典中
length的值(length/8).
Algorithm part2 Computing the encryption dictionary’s U (user password) value (Revision 3 or greater)
1.按照Algorithm part1的方法,基于用户口令字符串生成全局加密密钥.
2.初始化MD5函数并将按照Algorithm part1步骤1生产的32位字符串输入该函数.
3.将文件ID数组中的第一个32位ID字符串传入MD5函数.
4.用第1步产生的密钥通过RC4算法来加密由步骤3输出的16位字符串.