一种能定位pdf电子发票篡改的水印嵌入与认证方法

文档序号:8923186阅读:1550来源:国知局
一种能定位pdf电子发票篡改的水印嵌入与认证方法
【技术领域】
[0001] 本发明涉及一种能定位roF电子发票篡改的水印嵌入与认证方法,属于电子发票 认证领域。
【背景技术】
[0002] 早在2012年,我国就启动了电子发票试点工作,减少开具纸质发票所造成的用纸 浪费。国家税务总局出台的《网络发票管理办法》从2013年4月1日起施行,要求所有开具 发票的单位和个人向消费者出具网络发票。现阶段的网络发票在用作财务记账凭证时,仍 然需要将电子发票打印在"特定纸质"上。也就是说,开具发票的单位和个人仍然需要将打 印的纸质发票通过快递寄送给消费者,造成人力、物力的浪费。为此,2013年6月和12月, 我国先后在北京、上海两地开始试点电子发票。至今成功开具电子发票超过5000万张。
[0003]2014年11月16日,国务院办公厅发布《关于促进内贸流通健康发展的若干意见》, 明确提出要"加快推进电子发票应用,完善电子会计凭证报销,登记入账及归档保管等配套 措施"。这是国务院层面首次公开推广电子发票,国家电子商务标准化总体组副组长邱月明 表示,随着电子商务的快速发展,必然带动发票业务的创新,电子发票较传统发票具有成 本低、效率高的天然性优势,未来几年有望在全国大范围内得到推广。
[0004]而在今年两会期间,推广电子发票、减少能源浪费,同样也成为委员们关注的焦 点。而就目前多个省市的试点情况而言,推广电子发票主要遇到"入账难、报销难"的问题。 对此,两会委员,苏宁控股集团董事长张近东在《加快推进电子发票报销入账》的提案中建 议,优先从法律、制度层面解决电子发票的合法效力问题、确立电子发票作为合法入账凭证 的法律地位,进而推进电子发票在全国范围普及。而当电子发票的法律地位被确认之后,随 之而来要解决"入账难、报销难"的问题。由于PDF格式具有安全性高,可移植性好,存储容 量小,因此现有的电子发票大多采用PDF格式。
[0005] 现有针对TOF电子发票的保护算法大多是基于数字签名的方法,它能够判别发票 是否被篡改,但并不能实现篡改定位的功能,其判定结果说服力差。
[0006] 采用水印嵌入的认证方法可以对PDF文件的篡改进行判定,也能对篡改进行定 位。但其认证算法大多数是利用交叉引用表中冗余空间嵌入水印,若采用此方法对PDF格 式的电子发票进行信息嵌入,则水印容量很小而且安全性低,给其后面的篡改定位带来限 制。

【发明内容】

[0007] 本发明的目的是提供一种能定位roF电子发票篡改的水印嵌入与认证方法。该方 法在保证实现水印不可见的同时,文件增量小,控制在1 %以内。其对篡改的检测准确性高, 误检率低,能够有效抵抗替换、添加和删除等篡改。
[0008] 本发明解决其技术问题,所采用的技术方案为:一种能定位roF电子发票篡改的 水印嵌入与认证方法,包括如下步骤:
[0009]A、基于文件阅读页面的水印生成
[0010]A1、页面分块:将原始TOF电子发票文件的阅读器页面P,根据信息单元的固有的 分布坐标分为〗个页面块Pi,即p={Pi|i= 12,…,I},i为页面块序号,I为整个阅 读器页面P上的页面块总数;
[0011] A2、解析文件结构:对原始roF电子发票文件的代码页面S进行PDF文件结构解 析,得到标明PDF文件版本信息的文件头SH,文件体S。,交叉引用表Sx和文件尾ST四个部 分,艮p:s= {SH,s0,sx,ST};
[0012] 其中,文件体SQ由J个对象0」(j= 1,2,...,J)组成,即{0」|j= 1,2,…J}, j为对象号;
[0013] 交叉引用表S#J个索引信息Xj(j=1,2,...,J)组成,Xj={对象偏移地址 代表该对象所修改的次数,对象是否正在被使用的状态};
[0014] 文件尾ST包括文件描述、密码信息及文件体S中的根对象号、摘要对象号和对象 总数;
[0015]A3、认证信息生成:
[0016] 对每一个页面块Pi(i= 1,2…,I),首先利用Itextsharp组件提取每个页面块Pi 中的文本内容凡,1\={t"Iq= 1,2, ? ?,zj,以及文本坐标Di,Di={d"Iq= 1,2, ? ?,zj, 其中,ti;q为文本内容Ti中的第q个信息单元,zi为文本内容T1包含的信息单元个数,di;q 为信息单元对应的坐标信息,各信息单元t&之间需添加行末标识符"\r\n" ;
[0017] 然后,基于秘钥&生成文本内容Ti与文本坐标Di的摘要信息Hi,氏= Hash(kp| |Dj;其中,Hash(?)表示Hash函数,| |代表连接操作;
[0018] 最后将页面块Pi的文本内容Tp文本坐标Di和摘要信息Hi连接起来构成页面块 Pi的认证信息A"Ai=Ti|也| |Hi;
[0019]A4、水印信息生成:对每个页面块Pi(i= 1,2…,I),将A3步生成的认证信息八1进 行压缩并利用秘钥k2加密之后得到二进制压缩数据流Bp并添加PDF格式信息1,生成待 添加的PDF对象UiZ{BpYj,同时计算其字节长度,记为li;
[0020] 所述的PDF格式信息Yi包括:对象号i+J、对象修改次数、对象的关键词、换行符;
[0021] B、基于文件代码的水印嵌入
[0022] 首先将A4步生成的I个待添加的PDF对象I作为页面块Pi的水印信息W= {W」i =1,2,…I},将该水印信息W与A2步的文件体S。: {0j|j= 1,2,…J}合并,得到包含N= 1+了个合并对象〇'11的合并文件体3/。={0'」11=1,2,"川},其中11为合并对象0 /11 的对象号,
同时根据偏移地址信息&,计算得到每个合并对象〇' "的 长度匕,
[0023] 然后,基于密钥k3生成长度为I+J的伪随机序列,对该序列进行从小到大排序,排 序前的位置信息按排序后的位置排列,构成对象置乱序列V,V= {vn|n= 1,2, . . .,I+J}, 其中vn为合并对象〇'n的新对象号,vne[1,I+J]的整数;据以进行置乱操作,即将合 并对象〇'n的对象号修改Svn,即令,随即得到置乱后的含水印文件体
[0024] C、交差索引表和文件尾的更新
[0025] 根据B步中得到的含水印文件体%和对象长度信息1' "计算出合并后的偏移地 址信息
,其中:a为第一个对象的偏移地址, 其具体值为PDF文件版本信息的文件*SH的字节长度;重新生成交差索引表.#,同时更新 文件尾ST中的根对象号、摘要对象号和对象总数,生成更新后的文件尾;
[0026] D、含水印roF电子发票文件生成
[0027] 将B步的含水印文件体和C步更新后的交差索引表#和文件尾合并重 构,即得到含水印的发票文件Fw;
[0028] E、认证信息重构和认证信息提取
[0029] E1、待检测文档的认证信息重构:
[0030] 将待测roF电子发票文件F#的阅读器页面P#,根据信息单元的固有的分布坐标分 为I个待测页面块Pi#,即P#={PIi= 1,2,…,1};
[0031] 对每一个待测页面块P'Q= 1,2…,I),首先利用Itextsharp组件提取每个待测 页面块P'中的待测文本内容T',T#i= {t^Jq=l,2,..,Zi},以及待测文本坐标D',D' ={d',」q= 1,2, . .,zj,其中,t、为待测文本内容T'中的第q个待测信息单元,zi为待 测文本内容T'包含的信息单元个数,d为待测信息单元t\q对应的待测坐标信息,各待 测信息单元t\q之间需添加行末标识符"\r\n" ;
[0032] 然后,基于秘钥&生成待测文本内容T'与待测文本坐标D'的待测文本摘要信息 Hash(k1,T#i|IDV;
[0033] E2、认证信息提取:对待测的PDF电子发票文件F#代码页面S#进行解析得到待测 文件体
根据秘钥匕和对象置乱序列
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1