经过Agile Encryption加密后的Office07文档不再是一个zip包,而是一个复合文档。其复合文档结构类似这样:


         注:图片里绿色的是storage 白色的是stream

EncryptInfoStream The EncryptionInfo stream contains detailed information about the cryptography used to encrypt the EncryptedPackage stream when agile encryption is used

以上是[MS-OFFCRYPTO]里的原文,其实这个流主要就是一个xml,类似于这样

<encryption xmlns="http://schemas.microsoft.com/office/2006/encryption"xmlns:p="http://schemas.microsoft.com/office/2006/keyEncryptor/password">
<keyData saltSize="16" blockSize="16" keyBits="128" hashSize="20" cipherAlgorithm="AES" cipherChaining="ChainingModeCBC"hashAlgorithm="SHA1" saltValue="Q7OE8gKnfX/bm7uMJ752ag=="/>
<dataIntegrity encryptedHmacKey="pTQH/zG6UxAs8zcV3MylFmxZdwJzVOSUpQiJg5hK9Oc="encryptedHmacValue="ZCx7AOc/p8I/FZpZRCgaOrLoAx3GZXGYthp2Kr65bPA="/>
<keyEncryptors>
<keyEncryptor uri="http://schemas.microsoft.com/office/2006/keyEncryptor/password">
<p:encryptedKey spinCount="100000" saltSize="16" blockSize="16" keyBits="128" hashSize="20" cipherAlgorithm="AES"cipherChaining="ChainingModeCBC" hashAlgorithm="SHA1" saltValue="91pQIzDUuRJTmlRzt3QEdg=="encryptedVerifierHashInput="iS7qX3+4S7zsdyBC9HMRZg=="encryptedVerifierHashValue="Gi5ZYZmI57wA5XqfkoUy0JKExnFJYDMnyvYPU+LPluE=" encryptedKeyValue="vQoa+uhoj677qGSt9VFMsA=="/>
</keyEncryptor>

</keyEncryptors>

</encryption>

EncryptedPackageStream:由一个8bytes的StreamSize字段加一个EncryptedData数据段组成,EncryptedData就是整个Office07文档加密后的数据。StreamSize标识的长度可能要比EncryptedData的长度要短,因为加密数据时需按照BlockSize的倍数补齐。

另外几个stream的结构是这样的

DataSpaceMap


     Version Stream

StrongEncryptionDataSpace


     0x06Primary

ooXMLAgile Encryption(一)文档结构相关推荐

  1. HTML5文档结构主体结构 语义结构,html5组织文档结构.pdf

    html5组织文档结构 1 / 10 html5 组织文档结构 文档部分,即 body 部分,包含了访问者可以看到的内容.传统的 HTML 文档通常通过 div 元素来组织文档结构,再配 上适当的样式 ...

  2. 使用Word2010灵活掌握文档结构

    使用Microsoft Word应用程序组织和编写文档时,可能会出现反复调整文档结构的情况,而通过一系列的剪切.复制.粘贴操作来解决问题,可能会让您觉得很麻烦,有没有更好的解决办法呢?其实,通过使用W ...

  3. Python工程的文档结构

    Python工程的文档结构,可以参考https://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for- ...

  4. 通过css类/选择器选取元素 文档结构和遍历 元素树的文档

    通过css类选取元素 html所有的元素拥有class属性,该属性会对元素进行分组,标识为某一组. js中使用className属性来保存HTML的class的属性值 var NodeList = d ...

  5. (基础)HTML文档结构知识点讲解

    HTML文档结构 HTML文档,也被称为网页,包括头部和主体两大部分.头部主要描述浏览器和搜索引擎所需要的信息,浏览器不会将这些信息呈现给访问者:主体是文档的正文,是网页中真正要传达的信息,这些信息将 ...

  6. html格式文档结构保存数据库6,freeCAD文档结构

    一个freecad文档包含了你场景中的所有物体.它可以包含组及任何工作平台制造的物体.你可以切换工作台,但是它仍然工作在同一个文档上.当您保存您的工作时,该文件就被保存到磁盘上.你可以同时打开多个fr ...

  7. morphia_Morphia和MongoDB:不断发展的文档结构

    morphia 在我先前关于Morphia的帖子中 ,我介绍了一些典型用法,并提到了一些已知问题的警告和解决方法. 我展示了使用Morphia的工作有多么容易,以及它与Java世界的交互方式有多么干净 ...

  8. Morphia和MongoDB:不断发展的文档结构

    在上一篇有关Morphia的文章中 ,我介绍了一些典型用法,并提到了一些已知问题的警告和解决方法. 我展示了使用Morphia多么容易,以及它与Java世界的交互方式. 为了跟进该帖子,我将讨论如何处 ...

  9. 不支持对系统目录进行即席更新_「目录」让你的文档结构一目了然

    很多时候,要求文档要有目录,比如书籍/杂志/论文/标书等等. 目录可以让文档结构一目了然. 如果不了解 Word (包括 Microsoft Office 和 WPS Office 下的Word)操作 ...

最新文章

  1. python生成器单线程_【Python】迭代器、生成器、yield单线程异步并发实现详解
  2. eclipse中设置python的版本
  3. 以前的项目今日打开突然报错了!
  4. idea导包都报错_IDEA+Springboot 导出jar包,war包
  5. 53 SD配置-定价配置-定义条件排斥组
  6. 7.边缘检测:2D运算——Canny的不同结果、单个2D边缘检测滤波器、实现边缘3种方法Matlab实战_3
  7. OpenCV-绘制箭头cv::arrowedLine
  8. php获取脚本运行时间,PHP获取脚本运行时间
  9. VoLTE业务端到端流程:无线侧信令流程
  10. java 日期 yyyy_Java时间格式化时YYYY(大写)和yyyy(小写)的区别
  11. MySQL数据库的高级SQL语句
  12. 深度解析国内O2O模式
  13. IFD-x 微型红外成像仪(模块)与计算机工具软件 IFD_Tool 连接
  14. Luat Inside | 致敬经典,使用Air724UG制作简易贪吃蛇
  15. 数字证书认证机构(摘录自wiki百科)
  16. 学计算机专业的买游戏本能用吗,2020好用的游戏本有哪些_2020适合高考后购买的游戏本...
  17. 【tensorrt】——Network has dynamic or shape inputs, but no optimization profile has been defined.
  18. stratum mining protocol demo
  19. OpenWrt路由开启FTP服务访问文件
  20. Zynq MPSOC 电子书免费下载

热门文章

  1. Excel文档安全性设置
  2. android 镂空字体下载,Android——自定义镂空掩饰控件
  3. IDEA中java文件出现小黄色的J
  4. 163邮箱自动化登录实现模块化【3】
  5. maven如何排除依赖
  6. 72. git jenkin实践二 ------ 中心服务器gitlab
  7. 第3天-Jenkins详解
  8. 学计算机有什么好处和坏处,学习电脑有什么好处和坏处,电脑好处和坏处有哪些?...
  9. 集体智慧编程——使用决策树发现潜在客户
  10. XAMPP的下载与安装