【问题标题】:Update: How to address to an exact location in a PDF file?更新:如何定位到 PDF 文件中的确切位置?
【发布时间】:2019-02-27 20:23:40
【问题描述】:

也许这个问题看起来有点奇怪,但它有一个非常实用的用例。

假设我们选择了 PDF 文件的任意部分来生成校验和,例如以下屏幕截图中的选定文本(突出显示的文本):

然后我们使用哈希函数从选定的文本中生成校验和。 我们交付(而不是发送)整个 PDF 文件连同此校验和到接收方,以便该接收方不知道 PDF 文件的哪个部分已被选择和散列。 并且这个接收者想要验证这个校验和。因此,他们需要确切地知道 PDF 文件的哪个部分已被选中和散列。所以,我们需要找到一个解决方案,让这个接收者可以找到所选和散列文本的确切位置。

由于散列函数不可逆,问题在于:

此接收器如何在 PDF 文件中准确找到选定和散列的文本?

例如,确定PDF文件中所选和散列文本的确切位置和位置是否可行? (它非常敏感,因为即使是错误的字符或空格也会导致校验和验证失败。)

是否有可靠的方法来应对这一挑战?

注意1:如果问题不够清楚,请告诉我更详细的解释。

重要提示:请注意,由于篇幅限制,我们只能存储校验和值加上一些显示所选文本位置的有限数据,这意味着我们无法存储整个选定的文本

用例:我们打算通过验证者来验证文档中选定文本的完整性。校验和以及哈希文本地址的信息将存储在区块链中,因此由于存储在区块链中的限制(成本很高),我们无法将整个选定和哈希文本存储在区块链中,而是仅存储一些有用的信息,这些信息针对选定和散列文本的确切位置。验证者可以访问整个文档,但是他们不知道文档的哪个部分已被散列。他们需要知道它来验证校验和。

假设前。证明者有证书(纸质),他需要证明他是证书的所有者。他扫描证书(将其数字化为任何格式更好)。证书颁发者选择了证书的一些敏感部分(例如所有者信息等),并将它们分别散列到每个选定的部分以生成校验和。证明者(所有者)将证书交付给验证者时,验证者需要检查所有校验和。在这一步,他需要知道证书的哪些部分已经被散列。因此,我们需要将有用的数据附加到校验和中,以便验证者可以找到散列部分。

另请注意选中的文本不会被记录,但也会被选中生成校验和。然而验证者需要知道这个文本的内容来验证校验和。问题是由于区块链存储数据的限制,我们无法存储整个散列文本,而且我们只能存储一些有用的信息,这些信息指向散列文本的确切位置。

更新:这个问题与 (FREE Tool for watching coordinates in PDF) 相关,使用工具我们可以找到所选文本的准确 (x,y) 坐标。我还不确定这个工具是否可以用于我的问题。

【问题讨论】:

    标签: pdf hash checksum coordinate-systems


    【解决方案1】:

    请注意,PDF 文件不包含 文本。它包含一个对象树,其中一些是包含 Postscript 简化变体的流,其中包含 命令 告诉渲染器将哪个 字形 放在哪里(或其他命令渲染图形输出)。

    我建议使用mupdf 包中的mutool 之类的工具来解压缩小型 PDF 文档中的流,然后在文本编辑器中打开它,亲自查看它的外观。

    因此,当您在渲染器中选择“文本”时,您将连接到渲染器将字形放置在页面上的进程。现在,渲染器可以做出一些努力将字形重新翻译成文本,这依赖于 (1) 在 PDF 中有表格,(2) 假设生成 PDF 的应用程序是如何工作的(例如,它布置了字形与原文顺序相同)。如果您对这个重新翻译的文本进行哈希处理,它将始终取决于渲染器用于进行重新翻译的方法。

    因此,您的用例(无论它有什么用处)都需要为发送方和接收方提供相同的渲染程序。

    另一方面,假设嵌入字体或相同字体,渲染是确定性的(特别是在同一个渲染器中)。所以最简单的方法就是记录下你在页面上的准确选择位置,以及页码,然后发送这些信息。

    编辑

    如果您首先扫描纸质文档,并且需要标记几个矩形区域,为图像选择某种格式,找到矩形的确切像素位置,将矩形内的像素提取为某种定义的格式(例如 RGB 8+8+8),并对这些数据进行哈希处理。然后将矩形位置与哈希一起传输。

    为方便起见,您可以将多个扫描图像存储在 PDF 中,然后使用多种工具从 PDF 中提取它们,但您如何存储图像并不重要,只要您同意某种格式 (因为有损压缩可能会改变像素值)。

    这将要求您将扫描的图像存档(PDF 或任何其他形式)。

    【讨论】:

    • 感谢您提供的有用信息。一般来说,是否有任何其他文件格式(而不是使用 PDF)以便执行此过程更容易?意思是我们可以ex。向接收者发送散列文本的确切位置,以便接收者能够找到确切的选定文本。谢谢
    • 最简单的这种格式是纯 ASCII 或 UTF-8 格式的文本。如果您需要建议,我建议您编辑您的问题并详细解释您的用例(您的最终目标到底是什么?您想要实现什么,为什么?)。
    • 已添加。如果您需要更多详细信息,请告诉我。谢谢
    • 抱歉,“我们打算验证所选文本的完整性”并没有真正的帮助。这些是什么文件?它们是必需的 PDF 吗?它们是否必须被格式化,或者仅仅是重要的信息?更改 PDF 以突出显示选择(然后在整个更改的 PDF 上使用加密哈希)是一个选项吗?两边的观众是谁?你能对使用的软件做出假设吗?什么样的程序会记录选择并进行哈希处理?等等,第
    • 假设前。证明者有证书(纸质),他需要证明他是证书的所有者。他扫描证书(将其数字化为任何格式更好)。证书颁发者选择了证书的一些敏感部分(例如所有者信息等),并分别对每个选定部分进行散列以生成校验和。证明者(所有者)将证书交付给验证者时,验证者需要检查所有校验和。在这一步,他需要知道证书的哪些部分已经被散列。因此,我们需要将有用的数据附加到校验和中,验证者可以通过它找到散列部分。你怎么想?
    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多