- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网银文件格式处理.doc
网银文件格式处理
摘要:文件格式处理主要是对文件格式的编解码实现。文件格式处理主要有一组相关的功能类实现,按照实现层次划分为两类:文件内容的组织和文件格式的解析。
关键词:格式 解码 处理
▲▲一、文件格式的解析
加密文件格式通过自定义的一套标签语法来描述,不同的标签类型表示不同的数据类型,标签之间支持复合和嵌套。针对这些不同的标签类型,分别定义丢应的处理类,这些处理类之间保持这标签之间本身的逻辑关系。
1.CTag类
抽象的标签类型,定义标签类的公共属性和方法,所有的标签类都由CTag类派生。主要的方法和属性包括:
GetData:获得标签中包含的数据缓冲区指针。
GetDataLen:获得标签中包含的数据长度。
派生方法中,通过对CTag提供的静态方法的循环调用,实现文件格式的解析。通过对Parse方法实现各自特定数据的分析和处理。
2.CBinTag类
二进制数据标签类,处理二进制类型的数据。在加密文件格式中,属于CBinTag处理的标签数据类型包括:
0x40,加密数据:字节流
0x41,MAC数据
0x54,初始向量,二进制字节流
CBinTag类集成CTag的所有方法,没有自己的特定数据处理。
3.CStrTag类
字符串数据标签类,处理字符串类型的数据。在加密文件格式中,属于CStrTag处理的标签数据类型包括:
0xE0,文件名,变长,内容为UTF-8编码
CStrTag类实现的主要方法有:
Parse:解析字符串标签数据,将数据的UTF-8编码转换为多字节编码。将转码后的字符串数据赋值给内部的字符串成员变量。
GetValue:获得字符串数据值。
4.CIntTag类和CInt64Tag类
这两个类都是证书数据标签类,处理整类型的数据。CIntTag处理的数据长度最大为32位,CInt64Tag处理的数据长度最大为64位。在加密文件格式中,属于这两个类处理的标签数据类型包括:
0x58,Mac算法,编码见附录
0x50,密钥bit长度,如果明确可忽略
0x51,算法,编码见附录
0x52,对称加密模式,编码见附录
0x53,填充模式,编码见附录1
0xE3,文件时间,用/1/1 00:00:00 GMT以来秒数表示,整数类型
除0xE3使用的是CInt64Tag外,其他的标签类型都用CIntTag类进行处理。
这两个类实现的主要方法有:
GetValue:获得整数数据值。
5.CComplexTag类
组合标签类型,或者称为容器标签类型。该标签中并不包含实际的数据内容,而是由多个子标签构成。在加密文件格式中,属于CComplexTag处理的标签数据类型包括:
0x01, 组合段:内容不限的组合结构
0x02, 说明段:对加密文件或数据的附加描述的组合段
0x03, 对称加密段:包含加密算法、初始向量等参数和加密数据、MAC验证数据的组合段
0x04, 数字签名段:组合段,目前未使用
0x05, 非对称加密段:组合段,目前未使用
CComplexTag类实现的主要方法有:
Parse:解析子标签对象,将解析后子标签对象们放入内部的标签对象数组成员变量。
GetChildByType:通过标签类型,获得子标签对象。如果该类型的子标签不存在,返回空值。
▲▲二、文件内容的组织
文件的标签语法定义了组织文件结构的一种可扩展规范,通过这个规范可以定义任何结构的文档内容。加密文件的具体内容,是按照文件格式的规范来描述和组织的。换句话说,文件的标签语法定义了一种描述方法,而针对加密文件的具体业务需求,又定义了一个具体的文件模版。在定义了加密文件由那些标签组成,标签的层次结构,顺序关系等,这就是一个具体的文件模版。针对加密文件的格式解析,由CSefFile类来实现。该类负责解析文件的内容,按照标签语法将文件解析为各种类型的标签,再根据加密文件的内容组织结构,将各个标签项映射到各个文件属性中,获得完整的加密文件对象。
▲▲三、CSefFile的主要方法和属性
1.公有函数
OpenFile:打开一个加密文件。打开文件过程会对加密文件进行解析和验证,并通过输入的口令,对加密文件进行解密处理。
CloseFile:关闭文件,释放内存空间。
IsOpen:判断文件是否已经打开。
GetHead:获得文件头信息。
GetVersion:获得文件版本信息。
2.解析相关私有函数
ParseData:解析加密文件内容。
原创力文档


文档评论(0)