基于PDF文档结构的数字隐写

本文介绍了PDF文档的结构,包括文件头、文件体、交叉引用表和文件尾,并详细讲解了基于PDF的数字隐写算法原理,通过修改交叉引用表的行末标识符来嵌入和提取水印。最后,分享了一段用Python实现的隐写及水印提取程序,但指出程序存在对多交叉引用表PDF处理的错误。
摘要由CSDN通过智能技术生成

前言

前面看了PDF隐写,研究了一下是怎么回事,自己想实现一下,然后在网上也没看到有相应脚本,就花时间写了一下,也趁此做下记录。

PDF文档结构

PDF文件结构由四部分元素构成:文件头 文件体 交叉引用表 文件尾

  • 文件头。指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。

  • 文件体。PDF文件的主要部分﹐由一系列间接对象组成。这些间接对象描述了文档的各个组成部分﹐如字体、页面、实例图形等。各个间接对象间的层次关系构成了PDF的文档结构(即逻辑结构),其是一个树形结构,由目录(Catalog)、页树( page tree)、大纲树( outline tree)、线索树(Article thread)和名字树(Named Destination)组成。

  • 交叉引用表。为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表,包含了间接对象的偏移地址、产生号和是否在使用等信息。其对应着一个或者多个交叉引用节。

  • 文件尾。说明了根对象(Catalog)的对象号和交叉引用表的偏移地址,另外还保存了PDF文件的加密等安全信息。

随便拿一个pdf文档,丢到010里面运行pdf模板就可以得到上述那样一个结果

而解析是应用程序从PDF文件的尾段开始访问的,其过程为:首先从文件尾所声明的交叉引用表的地址,找到

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值