网银文件格式处理

点赞:14956 浏览:68418 近期更新时间:2024-03-10 作者:网友分享原创网站原创

摘 要 :文件格式处理主要是对文件格式的编解码实现.文件格式处理主要有一组相关的功能类实现,按照实现层次划分为两类:文件内容的组织和文件格式的解析.

关 键 词 :格式 解码 处理

▲▲一、文件格式的解析

加密文件格式通过自定义的一套标签语法来描述,不同的标签类型表示不同的数据类型,标签之间支持复合和嵌套.针对这些不同的标签类型,分别定义丢应的处理类,这些处理类之间保持这标签之间本身的逻辑关系.

1.CTag类

抽象的标签类型,定义标签类的公共属性和方法,所有的标签类都由CTag类派生.主要的方法和属性包括:

GetData:获得标签中包含的数据缓冲区指针.

GetDataLen:获得标签中包含的数据长度.

派生方法中,通过对CTag提供的静态方法的循环调用,实现文件格式的解析.通过对Parse方法实现各自特定数据的分析和处理.

2.CBinTag类

二进制数据标签类,处理二进制类型的数据.在加密文件格式中,属于CBinTag处理的标签数据类型包括:

0x40,加密数据:字节流

0x41,MAC数据

0x54,初始向量,二进制字节流

CBinTag类集成CTag的所有方法,没有自己的特定数据处理.

3.CStrTag类

字符串数据标签类,处理字符串类型的数据.在加密文件格式中,属于CStrTag处理的标签数据类型包括:

0xE0,文件名,变长,内容为UTF-8编码

网银文件格式处理参考属性评定
有关论文范文主题研究: 关于标签的论文范文检索 大学生适用: 自考论文、学士学位论文
相关参考文献下载数量: 11 写作解决问题: 写作资料
毕业论文开题报告: 标准论文格式、论文前言 职称论文适用: 技师论文、职称评副高
所属大学生专业类别: 写作资料 论文题目推荐度: 最新题目

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:解析加密文件内容.先将文件解析为通用的标签对象组合,然后根据加密文件的结构,从各个标签对象中获取文件属性信息.

DecryptFile:解密文件数据的内容.即对加密文件中,原始文件的加密数据部分进行解密处理,获得原始文件的数据信息.

3.处理相关私有函数

InitKey:初始化密钥.通过口令,循环进行Hash处理,生成文件的加密密钥.

GetEncAlgo:获得加密算法.加密算法支持DES、3DES、AES等,通过算法标识来指定.当前默认使用3DES算法.