pdf - PDF 电子签名 ByteRange
问题描述
我正在处理一些 PDF 文件,但我没有找到对此处发布的问题的明确解释。在数字签名的 PDF 文件中,我们有以下临时签名:
<< /Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached/ByteRange[O1 L1 O2 L2] /Contents<0000....0000>
O1 = 偏移量 1(零)
L1 = 长度 1(签名前的内容长度)
O2 = 偏移量 2(L1 + 签名长度)
L2 = 长度 2(签名后的内容长度)
我有这些问题:
1 - 要“散列”的内容应包括“<”和“>”(在签名占位符的开头和结尾 0000....0000)?
2 - 签名长度是11742?这包括“<”和“>”吗?
3 - 在ByteRange上,第二个参数是从文件开头到“<”(在签名占位符 0000....0000 之前)或包括它的长度?与上一个问题相同,ByteRange的最后一个参数是否包含“>”字符(在签名占位符 0000....0000 的末尾)?
如果有人可以将我重定向到有关此的技术手册,那将非常有帮助。
解决方案
在阅读了技术手册并试用了 PDF 之后,我现在有了答案。
1 - 要“散列”的内容应包括“<”和“>”(在签名占位符的开头和结尾 0000....0000)?
不,“<”和“>”不应该是要“散列/签名”的数据的一部分。在签名过程之后,“<”和“>”应该用作十六进制签名的分隔符。示例:/Contents<3255....0000>
2 - 签名长度是11742?这包括“<”和“>”吗?
不必要。只要“签名占位符”的这个长度比签名和时间戳数据长。
3 - 在 ByteRange 上,第二个参数是从文件开头到“<”(在签名占位符 0000....0000 之前)或包括它的长度?与上一个问题相同,ByteRange 的最后一个参数是否包含“>”字符(在签名占位符 0000....0000 的末尾)?
第二个参数是“<”的偏移量(在签名占位符之前)或者,使用相同的逻辑,从文件开头到“<”的内容长度(不包括它)
最后一个参数不包括“>”来计算剩余数据的长度。
mkl ( https://stackoverflow.com/users/1729265/mkl )评论后的补充说明
O2 = 偏移量 2(L1 + 签名长度)
O2 = 偏移量 2 = L1 + 签名长度 + 2。这是因为占位符包括“<”和“>”
例子:
{100-BYTES-DATA-BEFORE}<0000....0000>{50-BYTES-DATA-AFTER}
要散列/签名/时间戳的数据
{100-BYTES-DATA-BEFORE} + {50-BYTES-DATA-AFTER}
签名占位符 = 11742 字节(11742 个零)
ByteRange[O 100 11844 50]
在数据签名和/或时间戳之后:
{100-BYTES-DATA-BEFORE} + < + 4321....0000 + > + {50-BYTES-DATA-AFTER}
推荐阅读
- jquery - 尽管已添加到 react-app,但 Jquery 仍无法运行
- python - python pymssql 错误:18456,b'DB-Lib 错误消息 20010,严重性 8:\n无法分配足够的内存
- image - React Native 中的图像滚动缩放
- html - 我使用角度模板驱动的形式创建简单的形式
- c# - 自动计数项目不会建立
- python - 个人 AI 助手程序未运行
- javascript - 将具有少量变量的静态 JS 函数转换为动态
- java - 当我点击一个recyclerview项目时,如何从一个片段移动到一个新的活动?
- kubernetes - 为什么必须为 ClusterRoleBinding.rbac.authorization.k8s.io 资源的 ServiceAccount 显式设置命名空间?
- oracle - PLSQL 文本文件创建行结束格式