CN102831347B - 一种数据处理方法和装置 - Google Patents
一种数据处理方法和装置 Download PDFInfo
- Publication number
- CN102831347B CN102831347B CN201210270387.3A CN201210270387A CN102831347B CN 102831347 B CN102831347 B CN 102831347B CN 201210270387 A CN201210270387 A CN 201210270387A CN 102831347 B CN102831347 B CN 102831347B
- Authority
- CN
- China
- Prior art keywords
- data
- memory block
- storage unit
- written
- preset value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本发明公开一种数据处理方法和装置,该方法包括以下步骤:检测数据处理信号,判断是否检测到所述数据处理信号,如果检测到,则对部分存储区中的数据进行初始化,向初始化后的存储区写入数据并将该存储区中的数据与预设值进行一系列运算,从存储运算结果的存储区中读取一个字节的数据,将读取到的一个字节的数据的取值作为索引,从存储运算结果的存储区读取预设数量字节的数据,并根据读取到的预设数量字节的数据,输出数据处理结果。本发明能够通过对一组或多组长度不等、格式不同的数据进行整合处理,输出固定长度、固定格式的数据,提高了数据处理的效率,且输出的数据具有随机性好、处理过程不可逆等特点。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据处理方法和装置。
背景技术
数据是对事实、概念或指令的一种表达形式,可由人工或自动化装置进行处理。数据的形式可以是数字、文字、图形或声音等,而数据在经过解释并赋予一定的意义后,便成为信息。数据处理是对数据的采集、存储、检索、加工、变换和传输,贯穿于社会生产和生活的各个领域,基本的目的是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对某些特定的人们来说是有价值和意义的数据。
在信息安全技术中,经常使用散列(Hash)函数来验证消息的完整性。散列函数对不同长度的输入信息进行处理,得到长度固定的输出信息,该固定长度的输出信息为输入消息的散列或消息摘要。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺陷:
现有的使用散列函数的数据处理方法,效率较低,且无法有效地防止数据被篡改。
发明内容
本发明实施例提供了一种数据处理方法和装置,以提高数据处理的效率。
本发明实施例提出一种数据处理方法,包括以下步骤:
A1、检测数据处理信号;
A2、判断是否检测到所述数据处理信号,如果检测到,则执行步骤A3;否则,返回步骤A1;
A3、对第一存储区、第二存储区和第三存储区中的数据进行初始化;
A4、将第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对第一存储单元中的数据进行赋值;
A5、将第五存储区中的数据复制到第三存储区;
A6、根据所述第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A7、对第六存储区中的数据进行初始化;
A8、将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;
A9、根据所述第七存储区中的数据被写入到所述第六存储区的位置,将第二预设值写入所述第六存储区中;
A10、将所述第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将所述第二存储单元中的数据写入所述第六存储区,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化;
A11、对所述第一存储区中的数据进行初始化;
A12、根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区;根据所述第一存储区的大小,对所述第一指针寄存器中的数据和所述第一存储单元中的数据进行更新;
A13、根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A14、判断所述第一存储单元中的数据是否大于零,如果大于零,则返回步骤A11;否则,执行步骤A15;
A15、将所述第三存储区中的数据复制到第八存储区中;
A16、对所述第一存储区、所述第二存储区和所述第三存储区中的数据进行初始化;
A17、将所述第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对所述第一存储单元中的数据进行赋值;
A18、将所述第五存储区中的数据复制到所述第三存储区;
A19、根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A20、将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新;
A21、根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中;
A22、将所述第一存储单元中的数据与所述第三预设值的乘积赋值给所述第二存储单元中的数据,将所述第二存储单元中的数据写入所述第一存储区;
A23、根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A24、从所述第三存储区中读取一个字节的数据,将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据;
A25、根据读取到的预设数量字节的数据,输出数据处理结果。
本发明实施例还提出一种数据处理装置,包括检测模块、第一判断模块、第一处理模块、第二处理模块、第二判断模块和第三处理模块,其中,
所述检测模块,用于检测数据处理信号;
所述第一判断模块,用于判断所述检测模块是否检测到所述数据处理信号,在判断所述检测模块检测到所述数据处理信号时,触发所述第一处理模块;
所述第一处理模块,用于对第一存储区、第二存储区和第三存储区中的数据进行初始化;将第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对第一存储单元中的数据进行赋值;将第五存储区中的数据复制到第三存储区;根据所述第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;对第六存储区中的数据进行初始化;将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;根据所述第七存储区中的数据被写入到所述第六存储区的位置,将第二预设值写入所述第六存储区中;将所述第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将所述第二存储单元中的数据写入所述第六存储区,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化,并触发所述第二处理模块;
所述第二处理模块,用于对所述第一存储区中的数据进行初始化;根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区;根据所述第一存储区的大小,对所述第一指针寄存器中的数据和所述第一存储单元中的数据进行更新;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中,并触发所述第二判断模块;
所述第二判断模块,用于判断所述第一存储单元中的数据是否大于零,如果大于零,则触发所述第二处理模块;否则,触发所述第三处理模块;
所述第三处理模块,用于将所述第三存储区中的数据复制到第八存储区中;对所述第一存储区、所述第二存储区和所述第三存储区中的数据进行初始化;将所述第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对所述第一存储单元中的数据进行赋值;将所述第五存储区中的数据复制到所述第三存储区;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新;根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中;将所述第一存储单元中的数据与所述第三预设值的乘积赋值给所述第二存储单元中的数据,将所述第二存储单元中的数据写入所述第一存储区;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;从所述第三存储区中读取一个字节的数据,将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据;根据读取到的预设数量字节的数据,输出数据处理结果。
本发明实施例能够通过对一组或多组长度不等、格式不同的数据进行整合处理,输出固定长度、固定格式的数据,提高了数据处理的效率,且输出的数据具有随机性好、处理过程不可逆等特点。
附图说明
图1-1、1-2是本发明实施例一提供的一种数据处理方法流程图;
图2-1、2-2是本发明实施例二提供的一种数据处理方法流程图;
图3是本发明实施例三提供的一种数据处理装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例一提供了一种数据处理方法,如图1-1、1-2所示,包括以下步骤:
步骤101,CPU检测数据处理信号。
步骤102,CPU判断是否检测到数据处理信号,如果检测到数据处理信号,则执行步骤103;否则,返回步骤101。
步骤103,CPU对第一存储区、第二存储区和第三存储区中的数据进行初始化。
具体地,CPU可以将第一存储区、第二存储区和第三存储区中的数据均设置为0x00,其中,第一存储区的大小可以为64个字节,用于存储散列运算的中间数据;第二存储区的大小可以为20个字节,用于存储输出数据的中间数据;第三存储区的大小可以为20个字节,用于存储输出数据的结果。
步骤104,CPU将第四存储区中的数据复制到第一存储区中,将第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到第一存储区中,并根据第一存储区的大小对第一存储单元中的数据进行赋值。
具体地,CPU可以将第四存储区中的数据复制到以第一存储区的首地址为起始位置、大小与第四存储区的大小相等的空间,例如,当第四存储区的大小为20个字节时,CPU可以将第四存储区中的数据复制从pD1到(pD1+19)的空间,其中,pD1为第一存储区的首地址。
CPU可以将第一存储单元中的数据赋值为第一存储区中的数据所占的字节数,例如,当第一存储区的大小为64个字节时,第一存储区中的数据所占的字节数为64,CPU将第一存储单元中的数据赋值为64。
其中,第一存储单元中的数据可以为数据长度变量(Payload);第四存储区的大小可以为20个字节,用于存储密钥数据;第一预设值可以用ipad表示,其取值可以为0x36。
步骤105,CPU将第五存储区中的数据复制到第三存储区。
其中,第五存储区的大小可以为20个字节,用于存储初始值,该初始值可以为预设的数值。
步骤106,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
其中,散列运算的输出数据的中间数据可以存储到第二存储区。
步骤107,CPU对第六存储区中的数据进行初始化。
具体地,CPU可以将第六存储区中的数据均设置为0x00;第六存储区的大小可以为192个字节,用于存储输入数据。
步骤108,CPU将第七存储区中的数据写入第六存储区中,并根据写入到第六存储区中的数据的长度,对第一存储单元中的数据进行更新。
具体地,CPU可以将第七存储区中的数据复制到以第六存储区的首地址为起始位置、大小与第七存储区的大小相等的空间。其中,第七存储区的大小可以为8字节,用于存放时间因子;pD6为第六存储区的首地址。例如,当第七存储区的大小为8个字节时,CPU可以将第七存储区中的数据复制到从pD6到(pD6+7)的空间。
CPU还可以将第一存储单元中的数据加被写入到第六存储区中的数据所占的字节数,例如,当被写入到第六存储区中的数据的长度为8字节时,CPU可以对第一存储单元中的数据加8。
步骤109,CPU根据第七存储区中的数据被写入到第六存储区的位置,将第二预设值写入第六存储区中。
具体地,CPU可以确定第七存储区中的数据被写入到第六存储区的位置,并将第二预设值写入到第六存储区中与确定出的位置相邻的位置。例如,当第七存储区中的数据被写入到第六存储区的位置为从pD6到(pD6+7)的空间时,CPU可以将第二预设值写入(pD6+8)。其中,第二预设值可以为0x80。
步骤110,CPU将第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将第二存储单元中的数据写入第六存储区,将第一存储单元中的数据减第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化。
具体地,当第三预设值可以为8时,CPU可以将第一存储单元中的数据与8的乘积赋值给第二存储单元中的数据。
CPU还可以将第二存储单元中的数据写入到以第六存储区中的预设位置为结束位置、大小与第二存储单元中的数据所占的空间大小相等的空间。例如,当预设位置为(pD6+63),第二存储单元中的数据所占的空间大小为8字节时,CPU可以将第二存储单元中的数据写入从(pD6+56)到(pD6+63)的空间,其中,pD6为第六存储区的首地址,第二存储单元中的数据可以为消息长度变量(Msglen)。
当第一存储区的大小为64个字节时,CPU可以将第一存储单元中的数据减64。CPU还可以将第一指针寄存器中的数据赋值为0。
步骤111,CPU对第一存储区中的数据进行初始化。
具体地,CPU可以将第一存储区中的数据均设置为0x00。
步骤112,CPU根据第一指针寄存器中的数据和第一存储区的大小,从第六存储区中选取数据,并将选取的数据复制到第一存储区;根据第一存储区的大小,对第一指针寄存器中的数据和第一存储单元中的数据进行更新。
具体地,CPU可以从地址(pD6+第一指针寄存器中的数据)开始,从第六存储区中选取大小与第一存储区的大小相同的数据,并将选取的数据复制到第一存储区,将第一指针寄存器中的数据加第一存储区中的数据所占的字节数,将第一存储单元中的数据减第一存储区中的数据所占的字节数。
例如,当第一存储区的大小为64个字节时,CPU可以从地址(pD6+第一指针寄存器中的数据)开始,选取64个字节的数据,并将选取的数据复制到第一存储区,将第一指针寄存器中的数据加64,将第一存储单元中的数据减64。
步骤113,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤114,CPU判断第一存储单元中的数据是否大于零,如果大于零,则返回步骤111;否则,执行步骤115。
步骤115,CPU将第三存储区中的数据复制到第八存储区中。
其中,第八存储区的大小为20字节,用于存放散列运算结果。
步骤116,CPU对第一存储区、第二存储区和第三存储区中的数据进行初始化。
具体地,CPU可以将第一存储区、第二存储区和第三存储区中的数据均设置为0x00。
步骤117,CPU将第四存储区中的数据复制到第一存储区中,将第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到第一存储区中,并根据第一存储区的大小对第一存储单元中的数据进行赋值。
具体地,CPU可以将第四存储区中的数据复制到以第一存储区的首地址为起始位置、大小与第四存储区的大小相等的空间,例如,当第四存储区的大小为20个字节时,CPU可以将第四存储区中的数据复制从pD1到(pD1+19)的空间,其中,pD1为第一存储区的首地址。
CPU可以将第一存储单元中的数据赋值为第一存储区中的数据所占的字节数,例如,当第一存储区的大小可以为64个字节时,第一存储区中的数据所占的字节数为64,CPU将第一存储单元中的数据赋值为64。
其中,第四预设值可以用opad表示,其取值可以为0x5c。
步骤118,CPU将第五存储区中的数据复制到第三存储区。
步骤119,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤120,CPU将第八存储区中的数据复制到第一存储区中,并根据第八存储区的大小对第一存储单元中的数据进行更新。
具体地,CPU可以将第八存储区中的数据复制到以第一存储区的首地址为起始位置、大小与第八存储区的大小相等的空间。例如,当第八存储区的大小为20个字节时,CPU可以将第八存储区中的数据复制到从pD1到(pD1+19)的空间。
CPU还可以将第一存储单元中的数据加写入到第一存储区中的数据所占的字节数,即第八存储区中的数据所占的字节数。例如,当写入到第一存储区中的数据,即第八存储区中的数据的长度为20字节时,CPU可以对第一存储单元中的数据加20。
步骤121,CPU根据第八存储区中的数据被写入到第一存储区的位置,将第二预设值写入第一存储区中。
具体地,CPU可以确定第八存储区中的数据被写入到第一存储区的位置,并将第二预设值写入到第一存储区中与确定出的位置相邻的位置。例如,第八存储区中的数据被写入到第一存储区的位置为从pD1到(pD1+19)的空间,CPU可以将第二预设值写入到(pD1+20)。其中,第二预设值可以为0x80。
步骤122,CPU将第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将第二存储单元中的数据写入第一存储区。
具体地,当第三预设值为8时,CPU可以将第一存储单元中的数据与8的乘积赋值给第二存储单元中的数据。
CPU还可以将第二存储单元中的数据写入到以第一存储区中的预设位置为结束位置、大小与第二存储单元中的数据所占的空间大小相等的空间。例如,当预设位置为(pD1+63),第二存储单元中的数据所占的空间大小为8字节时,CPU可以将第二存储单元中的数据写入从(pD1+56)到(pD1+63)的空间,其中,pD1为第一存储区的首地址。
步骤123,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤124,CPU从第三存储区中读取一个字节的数据,将读取的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据。
具体地,CPU可以从第三存储区中读取存储在首地址(pD3)的数据,可以读取存储在尾地址(pD3+19)的数据,还可以读取存储在第三存储区中的其他位置的数据。当第三存储区的长度已知时,可以将保存在pD3到(pD3+19)之间的任意一个字节的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据。即,CPU可以将保存在pD3到(pD3+19)之间的预定位置的一个字节的数据与第五预设值进行与运算。其中,第五预设值可以为“0x0f”。
例如,当存储在pD3到(pD3+19)之间的数据为{0x1f,0x86,0x98,0x69,0x0E,0x02,0xCA,0x16,0x61,0x50,0xEF,0x7F,0x19,0xDA,0x8E,0x94,0x5B,0x55,0x5A,0x09}时,(pD3+19)所指向的内容与“0x0f”进行与运算的结果为“0x9”,CPU将第二指针寄存器中的数据赋值为“0x9”。
步骤125,CPU对第三存储单元中的数据和第四存储单元中的数据进行初始化。
具体地,CPU可以将第三存储单元中的数据和第四存储单元中的数据均赋值为0,其中,第三存储单元中的数据为第一计数变量,用于记录从第三存储区中的读取的数据所占的字节数;第四存储单元中的数据可以为结果变量(Result)。
步骤126,CPU根据第二指针寄存器中的数据,从第三存储区读取一个字节的数据,将读取的数据与第四存储单元中的数据进行或运算,将运算结果赋值给第四存储单元中的数据,将第三存储单元中的数据加1。
具体地,CPU可以从地址(pD3+第二指针寄存器中的数据)读取一个字节的数据,将读取的数据与第四存储单元中的数据进行或运算,并将运算结果赋值给第四存储单元中的数据,将第三存储单元中的数据加1。
步骤127,CPU判断第三存储单元中的数据是否等于第六预设值,如果等于,则执行步骤129;否则,执行步骤128。
其中,第六预设值可以为需要从第三存储区读取的数据所占的字节数。
步骤128,CPU将第二指针寄存器中的数据加1,将第四存储单元中的数据左移8位,并返回步骤126。
例如,当保存在pD3到(pD3+19)之间的数据为{0x1f,0x86,0x98,0x69,0x0E,0x02,0xCA,0x16,0x61,0x50,0xEF,0x7F,0x19,0xDA,0x8E,0x94,0x5B,0x55,0x5A,0x09},第二指针寄存器中的数据为“0x9”,第六预设值为4时,经过上述步骤处理后,第四存储单元中的数据为“50EF7F19”。
步骤129,CPU将第四存储单元中的数据与第七预设值进行与运算,将运算结果赋值给第四存储单元中的数据。
其中,第七预设值与第六预设值相对应,赋值后的第四存储单元中的数据的最高位为0。
例如,当第六预设值为4时,第七预设值为“0x7fffffff”,如果第四存储单元中的数据为“50EF7F19”,则经过本步骤处理后,Result的取值为“0x50EF7F19”。当第六预设值为3时,第七预设值为“0x7fffff”;当第六预设值为6时,第七预设值为“0x7fffffffffff”。
步骤130,CPU对第五存储单元中的数据进行初始化。
具体地,CPU可以将第五存储单元中的数据赋值为0,第五存储单元中的数据可以为第二计数变量。
步骤131,CPU判断第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤132;否则,执行步骤133。
其中,第八预设值可以为数据处理结果的长度。
步骤132,CPU将第四存储单元中的数据对第九预设值取余,并根据第五存储单元中的数据和第九存储区的首地址,对取余得到的结果进行存储;将第四存储单元中的数据除以第九预设值得到的商赋值给第四存储单元中的数据,将第五存储单元中的数据加1,并返回步骤131。
具体地,CPU将第四存储单元中的数据对第九预设值取余得到的结果存储到地址(pD9+第五存储单元中的数据),其中,第九预设值为10,pD9为第九存储区的首地址,第九存储区用于存储数据处理结果。
步骤133,CPU根据第五存储单元中的数据和第九存储区的首地址,将存储在第九存储区中的数据作为数据处理结果输出。
具体地,CPU可以将保存在pD9与(pD9+第五存储单元中的数据-1)之间的数据作为数据处理结果输出。
例如,当第四存储单元中的数据为“0x50EF7F19”,第八预设值为9时,经过上述步骤处理后,第五存储单元中的数据为9,CPU将保存在pD9所指向的地址与(pD9+8)所指向的地址之间的数据“357872921”输出。
当第四存储单元中的数据为“0x50EF7F19”,第八预设值为11时,经过上述步骤处理后,第五存储单元中的数据为11,CPU将保存在pD9所指向的地址与(pD9+10)所指向的地址之间的数据“01357872921”输出。
本发明实施例能够通过对一组或多组长度不等、格式不同的数据进行整合处理,输出固定长度、固定格式的数据,提高了数据处理的效率,且输出的数据具有随机性好、处理过程不可逆等特点。
需要说明的是,在本发明的其他实施方式中,可以直接将处理得到的第四存储单元中的数据作为数据处理结果进行输出,例如,第四存储单元中的数据为“50EF7F19”时,可以将“50EF7F19”作为数据处理结果进行输出,同样可以实现本发明的发明目的,且增强了输出数据的形式的多样化,输出数据的形式可以包括字母加数字、纯数字和纯字母的形式。
在本发明的其他实施方式中,还可以获取保存在pD9与(pD9+第五存储单元中的数据-1)之间的数据的CRC(循环冗余校验码)码,并将该CRC码附在上述数据的前面或后面,将包括上述数据以及该数据的CRC码的整体作为数据处理结果输出。上述实施方式同样可以实现本发明的发明目的。
例如,当经过一系列处理后,第五存储单元中的数据为9,保存在pD9与(pD9+第五存储单元中的数据-1)之间的数据为“357872921”时,可以计算“357872921”的CRC校验和:10-((5+8+5+2+9+2+2)mod10=7,则将校验和“7”附在“357872921”之后得到“3578729217”,并将“3578729217”作为数据处理结果输出。
实施例二
本发明实施例二提供了一种数据处理方法,如图2-1、2-2所示,包括以下步骤:
步骤201,CPU检测数据处理信号。
步骤202,CPU判断是否检测到数据处理信号,如果检测到数据处理信号,则执行步骤203;否则,返回步骤201。
步骤203,CPU对第一存储区、第二存储区和第三存储区中的数据进行初始化。
具体地,CPU可以将第一存储区、第二存储区和第三存储区中的数据均设置为0x00,其中,第一存储区的大小可以为64个字节,用于存储散列运算的中间数据;第二存储区的大小可以为20个字节,用于存储输出数据的中间数据;第三存储区的大小可以为20个字节,用于存储输出数据的结果。
步骤204,CPU将第四存储区中的数据复制到第一存储区中,将第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到第一存储区中,并根据第一存储区的大小对第一存储单元中的数据进行赋值。
具体地,CPU可以将第四存储区中的数据复制到以第一存储区的首地址为起始位置、大小与第四存储区的大小相等的空间,例如,当第四存储区的大小为20个字节时,CPU可以将第四存储区中的数据复制从pD1到(pD1+19)的空间,其中,pD1为第一存储区的首地址。
CPU可以将第一存储单元中的数据赋值为第一存储区中的数据所占的字节数,例如,当第一存储区的大小为64个字节时,第一存储区中的数据所占的字节数为64,CPU将第一存储单元中的数据赋值为64。
其中,第一存储单元中的数据可以为数据长度变量(Payload);第四存储区的大小可以为20个字节,用于存储密钥数据;第一预设值可以用ipad表示,其取值可以为0x36。
步骤205,CPU将第五存储区中的数据复制到第三存储区。
其中,第五存储区的大小可以为20个字节,用于存储初始值,该初始值可以为预设的数值。
步骤206,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤207,CPU对第六存储区中的数据进行初始化。
具体地,CPU可以将第六存储区中的数据均设置为0x00;第六存储区的大小可以为192个字节,用于存储输入数据。
步骤208,CPU将第十存储区中的数据写入第六存储区,并根据写入到第六存储区中的数据的长度,对第一存储单元中的数据进行更新。
具体地,CPU可以将第十存储区中的数据复制到以第六存储区的首地址为起始位置、大小与第十存储区的大小相等的空间。其中,第十存储区用于存储suite信息,该suite信息为预定义的字符串格式数据,用于说明挑战数据的格式、时间因子的规格、算法和口令长度;pD6为第六存储区的首地址。例如,当第十存储区的大小为20个字节时,CPU可以将第十存储区中的数据复制到从pD6到(pD6+19)的空间。
CPU还可以将第一存储单元中的数据加被写入到第六存储区中的数据所占的字节数,例如,当被写入到第六存储区中的数据的长度为20字节时,CPU可以对第一存储单元中的数据加20。
步骤209,CPU根据第十存储区中的数据被写入到第六存储区的位置,将第十预设值写入第六存储区中,并根据写入到第六存储区中的第十预设值的长度,对第一存储单元中的数据进行更新。
具体地,CPU可以确定第十存储区中的数据被写入到第六存储区的位置,并将第十预设值写入到第六存储区中与确定出的位置相邻的位置。例如,当第十存储区中的数据被写入到第六存储区的位置为从pD6到(pD6+19)的空间时,CPU可以将第十预设值写入(pD6+20)。其中,第十预设值可以为0x00。
CPU还可以将第一存储单元中的数据加被写入到第六存储区中的第十预设值所占的字节数,当第十预设值的长度为1字节时,CPU将第一存储单元中的数据加1。
步骤210,CPU根据第十预设值被写入到第六存储区的位置,将第十一存储区中的数据写入第六存储区中,并根据写入到第六存储区中的、第十一存储区中的数据的长度,对第一存储单元中的数据进行更新。
具体地,CPU可以确定第十预设值被写入到第六存储区的位置,并将第十一存储区中的数据写入到第六存储区中与确定出的位置相邻的位置。第十一存储区的大小可以为128个字节,用于存储挑战数据。
例如,当第十预设值被写入到第六存储区的位置为地址(pD6+20),第十一存储区的大小为128个字节时,CPU可以将第十一存储区中的数据写入从(pD6+21)到(pD6+148)的空间。
CPU还可以将第一存储单元中的数据加被写入到第六存储区中的、第十一存储区中的数据所占的字节数,当第十一存储区的大小为128字节时,CPU将第一存储单元中的数据加128。
步骤211,CPU根据第十一存储区中的数据被写入到第六存储区的位置,将第七存储区中的数据写入第六存储区中,并根据写入到第六存储区中的、第七存储区中的数据的长度,对第一存储单元中的数据进行更新。
具体地,CPU可以确定第十一存储区中的数据被写入到第六存储区的位置,并将第七存储区中的数据写入到第六存储区中与确定出的位置相邻的位置。例如,当第十一存储区中的数据被写入到第六存储区的位置为从(pD6+21)到(pD6+148)的空间,第七存储区的大小为8个字节时,CPU可以将第七存储区中的数据写入从(pD6+149)到(pD6+156)的空间。
CPU还可以将第一存储单元中的数据加被写入到第六存储区中的、第七存储区中的数据所占的字节数,当第七存储区的大小为8字节时,CPU将第一存储单元中的数据加8。
步骤212,CPU根据第七存储区中的数据被写入到第六存储区的位置,将第二预设值写入第六存储区中。
具体地,CPU可以确定第七存储区中的数据被写入到第六存储区的位置,并将第二预设值写入到第六存储区中与确定出的位置相邻的位置。例如,当第七存储区中的数据被写入到第六存储区的位置为从(pD6+149)到(pD6+156)的空间时,CPU可以将第二预设值写入(pD6+157)。其中,第二预设值可以为0x80。
步骤213,CPU将第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将第二存储单元中的数据写入第六存储区,将第一存储单元中的数据减第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化。
具体地,当第三预设值为8时,CPU可以将第一存储单元中的数据与8的乘积赋值给第二存储单元中的数据。
CPU还可以将第二存储单元中的数据写入到以第六存储区中的预设位置为结束位置、大小与第二存储单元中的数据所占的空间大小相等的空间。例如,当预设位置为第六存储区中的尾地址(pD6+191),第二存储单元中的数据所占的空间大小为8字节时,CPU可以将第二存储单元中的数据写入从(pD6+184)到(pD6+191)的空间,其中,pD6为第六存储区的首地址,第二存储单元中的数据可以为消息长度变量(Msglen)。
当第一存储区的大小为64个字节时,CPU可以将第一存储单元中的数据减64。CPU还可以将第一指针寄存器中的数据赋值为0。
步骤214,CPU对第一存储区中的数据进行初始化。
具体地,CPU可以将第一存储区中的数据均设置为0x00。
步骤215,CPU根据第一指针寄存器中的数据和第一存储区的大小,从第六存储区中选取数据,并将选取的数据复制到第一存储区;根据第一存储区的大小,对第一指针寄存器中的数据和第一存储单元中的数据进行更新。
具体地,CPU可以从地址(pD6+第一指针寄存器中的数据)开始,从第六存储区中选取大小与第一存储区的大小相同的数据,并将选取的数据复制到第一存储区,将第一指针寄存器中的数据加第一存储区中的数据所占的字节数,将第一存储单元中的数据减第一存储区中的数据所占的字节数。
例如,当第一存储区的大小为64个字节时,CPU可以从地址(pD6+第一指针寄存器中的数据)开始,从第六存储区中选取64个字节的数据,并将选取的数据复制到第一存储区,将第一指针寄存器中的数据加64,将第一存储单元中的数据减64。
步骤216,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤217,CPU判断第一存储单元中的数据是否大于零,如果大于零,则返回步骤214;否则,执行步骤218。
步骤218,CPU将第三存储区中的数据复制到第八存储区中。
其中,第八存储区的大小为20字节,用于存放散列运算结果。
步骤219,CPU对第一存储区、第二存储区和第三存储区中的数据进行初始化。
具体地,CPU可以将第一存储区、第二存储区和第三存储区中的数据均设置为0x00。
步骤220,CPU将第四存储区中的数据复制到第一存储区中,将第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到第一存储区中,并根据第一存储区的大小对第一存储单元中的数据进行赋值。
具体地,CPU可以将第四存储区中的数据复制到以第一存储区的首地址为起始位置、大小与第四存储区的大小相等的空间,例如,当第四存储区的大小为20个字节时,CPU可以将第四存储区中的数据复制从pD1到(pD1+19)的空间,其中,pD1为第一存储区的首地址。
CPU可以将第一存储单元中的数据赋值为第一存储区中的数据所占的字节数,例如,当第一存储区的大小为64个字节时,第一存储区中的数据所占的字节数为64,CPU将第一存储单元中的数据赋值为64。
其中,第四预设值可以用opad表示,其取值可以为0x5c。
步骤221,CPU将第五存储区中的数据复制到第三存储区。
步骤222,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤223,CPU将第八存储区中的数据复制到第一存储区中,并根据第八存储区的大小对第一存储单元中的数据进行更新。
具体地,CPU可以将第八存储区中的数据复制到以第一存储区的首地址为起始位置、大小与第八存储区的大小相等的空间。例如,当第八存储区的大小为20个字节时,CPU可以将第八存储区中的数据复制到从pD1到(pD1+19)的空间。
CPU还可以将第一存储单元中的数据加写入到第一存储区中的数据所占的字节数,即第八存储区中的数据所占的字节数。例如,当写入到第一存储区中的数据,即第八存储区中的数据的长度为20字节时,CPU可以对第一存储单元中的数据加20。
步骤224,CPU根据第八存储区中的数据被写入到第一存储区的位置,将第二预设值写入第一存储区中。
具体地,CPU可以确定第八存储区中的数据被写入到第一存储区的位置,并将第二预设值写入到第一存储区中与确定出的位置相邻的位置。例如,第八存储区中的数据被写入到第一存储区的位置为从pD1到(pD1+19)的空间,CPU可以将第二预设值写入到(pD1+20)。其中,第二预设值可以为0x80。
步骤225,CPU将第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将第二存储单元中的数据写入第一存储区。
具体地,当第三预设值可以为8时,CPU可以将第一存储单元中的数据与8的乘积赋值给第二存储单元中的数据。
CPU还可以将第二存储单元中的数据写入到以第一存储区中的预设位置为结束位置、大小与第二存储单元中的数据所占的空间大小相等的空间。例如,当预设位置为(pD1+63),第二存储单元中的数据所占的空间大小为8字节时,CPU可以将第二存储单元中的数据写入从(pD1+56)到(pD1+63)的空间,其中,pD1为第一存储区的首地址。
步骤226,CPU根据第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到第三存储区中。
步骤227,CPU从第三存储区中读取一个字节的数据,将读取的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据。
具体地,CPU可以从第三存储区中读取存储在首地址(pD3)的数据,可以读取存储在尾地址(pD3+19)的数据,还可以读取存储在第三存储区中的其他位置的数据。当第三存储区的长度已知时,可以将保存在pD3到(pD3+19)之间的任意一个字节的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据。即,CPU可以将保存在pD3到(pD3+19)之间的预定位置的一个字节的数据与第五预设值进行与运算。其中,第五预设值可以为“0x0f”。
例如,当存储在pD3到(pD3+19)之间的数据为{0x1f,0x86,0x98,0x69,0x0E,0x02,0xCA,0x16,0x61,0x50,0xEF,0x7F,0x19,0xDA,0x8E,0x94,0x5B,0x55,0x5A,0x09}时,(pD3+19)所指向的内容与“0x0f”进行与运算的结果为“0x9”,CPU将第二指针寄存器中的数据赋值为“0x9”。
步骤228,CPU对第三存储单元中的数据和第四存储单元中的数据进行初始化。
具体地,CPU可以将第三存储单元中的数据和第四存储单元中的数据均赋值为0,其中,第三存储单元中的数据为第一计数变量,用于记录从第三存储区中的读取的数据所占的字节数;第四存储单元中的数据可以为结果变量(Result)。
步骤229,CPU根据第二指针寄存器中的数据,从第三存储区读取一个字节的数据,将读取的数据与第四存储单元中的数据进行或运算,将运算结果赋值给第四存储单元中的数据,将第三存储单元中的数据加1。
具体地,CPU可以从地址(pD3+第二指针寄存器中的数据)读取一个字节的数据,将读取的数据与第四存储单元中的数据进行或运算,并将运算结果赋值给第四存储单元中的数据,将第三存储单元中的数据加1。
步骤230,CPU判断第三存储单元中的数据是否等于第六预设值,如果等于,则执行步骤232;否则,执行步骤231。
其中,第六预设值可以为需要从第三存储区读取的数据所占的字节数。
步骤231,CPU将第二指针寄存器中的数据加1,将第四存储单元中的数据左移8位,并返回步骤229。
例如,当保存在pD3到(pD3+19)之间的数据为{0x1f,0x86,0x98,0x69,0x0E,0x02,0xCA,0x16,0x61,0x50,0xEF,0x7F,0x19,0xDA,0x8E,0x94,0x5B,0x55,0x5A,0x09},第二指针寄存器中的数据为“0x9”,第六预设值为4时,经过上述步骤处理后,第四存储单元中的数据为“50EF7F19”。
步骤232,CPU将第四存储单元中的数据与第七预设值进行与运算,将运算结果赋值给第四存储单元中的数据。
其中,第七预设值与第六预设值相对应,赋值后的第四存储单元中的数据的最高位为0。
例如,当第六预设值为4时,第七预设值为“0x7fffffff”,如果第四存储单元中的数据为“50EF7F19”,则经过本步骤处理后,Result的取值为“0x50EF7F19”。当第六预设值为3时,第七预设值为“0x7fffff”;当第六预设值为6时,第七预设值为“0x7fffffffffff”。
步骤233,CPU对第五存储单元中的数据进行初始化。
具体地,CPU可以将第五存储单元中的数据赋值为0,第五存储单元中的数据可以为第二计数变量。
步骤234,CPU判断第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤235;否则,执行步骤236。
其中,第八预设值可以为数据处理结果的长度。
步骤235,CPU将第四存储单元中的数据对第九预设值取余,并根据第五存储单元中的数据和第九存储区的首地址,对取余得到的结果进行存储;将第四存储单元中的数据除以第九预设值得到的商赋值给第四存储单元中的数据,将第五存储单元中的数据加1,并返回步骤234。
具体地,CPU将第四存储单元中的数据对第九预设值取余得到的结果存储到地址(pD9+第五存储单元中的数据),其中,第九预设值为10,pD9为第九存储区的首地址,第九存储区用于存储数据处理结果。
步骤236,CPU根据第五存储单元中的数据和第九存储区的首地址,将存储在第九存储区中的数据作为数据处理结果输出。
具体地,CPU可以将保存在pD9与(pD9+第五存储单元中的数据-1)之间的数据作为数据处理结果输出。
例如,当第四存储单元中的数据为“0x50EF7F19”,第八预设值为9时,经过上述步骤处理后,第五存储单元中的数据为9,CPU将保存在pD9所指向的地址与(pD9+8)所指向的地址之间的数据“357872921”输出。
当第四存储单元中的数据为“0x50EF7F19”,第八预设值为11时,经过上述步骤处理后,第五存储单元中的数据为11,CPU将保存在pD9所指向的地址与(pD9+10)所指向的地址之间的数据“01357872921”输出。
本发明实施例能够通过对一组或多组长度不等、格式不同的数据进行整合处理,输出固定长度、固定格式的数据,提高了数据处理的效率,且输出的数据具有随机性好、处理过程不可逆等特点。
实施例三
如图3所示,为本发明实施例三中的一种数据处理装置的结构图,包括检测模块310、第一判断模块320、第一处理模块330、第二处理模块340、第二判断模块350和第三处理模块360。
其中,检测模块310,用于检测数据处理信号。
第一判断模块320,用于判断检测模块310是否检测到所述数据处理信号,在判断检测模块310检测到所述数据处理信号时,触发第一处理模块330;
第一处理模块330,用于对第一存储区、第二存储区和第三存储区中的数据进行初始化;将第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对第一存储单元中的数据进行赋值;将第五存储区中的数据复制到第三存储区;根据所述第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;对第六存储区中的数据进行初始化;将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;根据所述第七存储区中的数据被写入到所述第六存储区的位置,将第二预设值写入所述第六存储区中;将所述第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将所述第二存储单元中的数据写入所述第六存储区,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化,并触发第二处理模块340。
其中,将第四存储区中的数据复制到所述第一存储区中,具体为:将所述第四存储区中的数据复制到以所述第一存储区的首地址为起始位置、大小与所述第四存储区的大小相等的空间;相应地,根据所述第一存储区的大小对第一存储单元中的数据进行赋值,具体为:将所述第一存储单元中的数据赋值为第一存储区中的数据所占的字节数。
将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:将所述第七存储区中的数据复制到以所述第六存储区的首地址为起始位置、大小与所述第七存储区的大小相等的空间,将所述第一存储单元中的数据加被写入到所述第六存储区中的数据所占的字节数。
将所述第二存储单元中的数据写入所述第六存储区,具体为:将所述第二存储单元中的数据写入到以所述第六存储区中的预设位置为结束位置、大小与所述第二存储单元中的数据所占的空间大小相等的空间。
第一处理模块330,还用于在将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新之前,将第十存储区中的数据写入所述第六存储区,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;根据所述第十存储区中的数据被写入到所述第六存储区的位置,将第十预设值写入所述第六存储区中,并根据写入到所述第六存储区中的所述第十预设值的长度,对所述第一存储单元中的数据进行更新;根据所述第十预设值被写入到所述第六存储区的位置,将第十一存储区中的数据写入所述第六存储区中,并根据所述第十一存储区中的数据的长度,对所述第一存储单元中的数据进行更新;
相应地,将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体包括:根据所述第十一存储区中的数据被写入到所述第六存储区的位置,将所述第七存储区中的数据写入所述第六存储区中,并根据所述第七存储区中的数据的长度,对所述第一存储单元中的数据进行更新。
其中,将第十存储区中的数据写入所述第六存储区,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:将所述第十存储区中的数据复制到以所述第六存储区的首地址为起始位置、大小与所述第十存储区的大小相等的空间,将所述第一存储单元中的数据加被写入到所述第六存储区中的数据所占的字节数。
根据所述第十存储区中的数据被写入到所述第六存储区的位置,将第十预设值写入所述第六存储区中,并根据写入到所述第六存储区中的所述第十预设值的长度,对所述第一存储单元中的数据进行更新,具体为:确定所述第十存储区中的数据被写入到所述第六存储区的位置,并将所述第十预设值写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的第十预设值所占的字节数。
根据所述第十预设值被写入到所述第六存储区的位置,将第十一存储区中的数据写入所述第六存储区中,并根据所述第十一存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:确定所述第十预设值被写入到所述第六存储区的位置,并将所述第十一存储区中的数据写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的、所述第十一存储区中的数据所占的字节数。
根据所述第十一存储区中的数据被写入到所述第六存储区的位置,将所述第七存储区中的数据写入所述第六存储区中,并根据所述第七存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:确定所述第十一存储区中的数据被写入到所述第六存储区的位置,并将所述第七存储区中的数据写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的、所述第七存储区中的数据所占的字节数。
第二处理模块340,用于对所述第一存储区中的数据进行初始化;根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区;根据所述第一存储区的大小,对所述第一指针寄存器中的数据和所述第一存储单元中的数据进行更新;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中,并触发第二判断模块350。
其中,根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区,具体为:从地址(pD6+offset1)开始,从所述第六存储区中选取大小与所述第一存储区的大小相同的数据,并将选取的数据复制到所述第一存储区,将所述第一指针寄存器中的数据加所述第一存储区中的数据所占的字节数,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,其中,pD6为所述第六存储区的首地址,offset1为所述第一指针寄存器中的数据。
第二判断模块350,用于判断所述第一存储单元中的数据是否大于零,如果大于零,则触发第二处理模块340;否则,触发第三处理模块360。
第三处理模块360,用于将所述第三存储区中的数据复制到第八存储区中;对所述第一存储区、所述第二存储区和所述第三存储区中的数据进行初始化;将所述第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对所述第一存储单元中的数据进行赋值;将所述第五存储区中的数据复制到所述第三存储区;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新;根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中;将所述第一存储单元中的数据与所述第三预设值的乘积赋值给所述第二存储单元中的数据,将所述第二存储单元中的数据写入所述第一存储区;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;从所述第三存储区中读取一个字节的数据,将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据;根据读取到的预设数量字节的数据,输出数据处理结果。
其中,将所述第二存储单元中的数据写入所述第一存储区,具体为:将所述第二存储单元中的数据写入以所述第一存储区中的预设位置为结束位置、大小与所述第二存储单元中的数据所占的空间大小相等的空间。
根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中,具体为:确定所述第八存储区中的数据被写入到所述第一存储区的位置,并将所述第二预设值写入到所述第一存储区中与确定出的位置相邻的位置。
将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新,具体为:将所述第八存储区中的数据复制到以所述第一存储区的首地址为起始位置、大小与所述第八存储区的大小相等的空间,将所述第一存储单元中的数据加写入到所述第一存储区中的数据所占的字节数。
预设数量可以为第六预设值;将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据,具体包括:
B1、将所述读取到的一个字节的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据;
B2、对第三存储单元中的数据和第四存储单元中的数据进行初始化;
B3、根据所述第二指针寄存器中的数据,从所述第三存储区读取一个字节的数据,将读取到的数据与所述第四存储单元中的数据进行或运算,将运算结果赋值给所述第四存储单元中的数据,将所述第三存储单元中的数据加第一预设步长;
B4、判断所述第三存储单元中的数据是否等于第六预设值,如果等于,则执行步骤B6;否则,执行步骤B5;
B5、将所述第二指针寄存器中的数据加第二预设步长,将所述第四存储单元中的数据左移8位,并返回步骤B4;
B6、将所述第四存储单元中的数据作为从所述第三存储区中读取到的预设数量字节的数据。
具体地,根据所述第二指针寄存器中的数据,从所述第三存储区读取一个字节的数据,具体为:从地址(pD3+offset2)读取一个字节的数据,其中,pD3为所述第三存储区的首地址,offset2为所述第二指针寄存器中的数据;
根据读取到的预设数量字节的数据,输出数据处理结果,具体包括:
将所述第四存储单元中的数据作为数据处理结果输出;
或者,
C1、将所述第四存储单元中的数据与第七预设值进行与运算,将所述运算结果赋值给所述第四存储单元中的数据;
C2、对第五存储单元中的数据进行初始化;
C3、判断所述第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤C4;否则,执行步骤C5;
C4、将所述第四存储单元中的数据对第九预设值取余,并根据所述第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区;将所述第四存储单元中的数据除以第九预设值得到的商赋值给所述第四存储单元中的数据,将所述第五存储单元中的数据加第三预设步长,并返回步骤C3;
C5、根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,将读取到的数据作为数据处理结果输出;
或者,
D1、将所述第四存储单元中的数据与第七预设值进行与运算,将所述运算结果赋值给所述第四存储单元中的数据;
D2、对第五存储单元中的数据进行初始化;
D3、判断所述第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤D4;否则,执行步骤D5;
D4、将所述第四存储单元中的数据对第九预设值取余,并根据所述第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区;将所述第四存储单元中的数据除以第九预设值得到的商赋值给所述第四存储单元中的数据,将所述第五存储单元中的数据加第三预设步长,并返回步骤D3;
D5、根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,根据读取到的数据,计算对应的循环冗余校验码CRC码,将所述读取到的数据和所述CRC码作为数据处理结果输出。
其中,根据第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区,具体为:
将所述取余得到的结果存储到地址(pD9+i),其中,pD9为所述第九存储区的首地址,i为所述第五存储单元中的数据;
所述根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,具体为:
读取保存在从地址pD9到地址(pD9+i-1)之间的空间的数据,其中,pD9为所述第九存储区的首地址,i为所述第五存储单元中的数据。
本发明实施例能够通过对一组或多组长度不等、格式不同的数据进行整合处理,输出固定长度、固定格式的数据,提高了数据处理的效率,且输出的数据具有随机性好、处理过程不可逆等特点。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (34)
1.一种数据处理方法,其特征在于,包括以下步骤:
A1、检测数据处理信号;
A2、判断是否检测到所述数据处理信号,如果检测到,则执行步骤A3;否则,返回步骤A1;
A3、对第一存储区、第二存储区和第三存储区中的数据进行初始化;
A4、将第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对第一存储单元中的数据进行赋值;
A5、将第五存储区中的数据复制到第三存储区;
A6、根据所述第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A7、对第六存储区中的数据进行初始化;
A8、将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;
A9、根据所述第七存储区中的数据被写入到所述第六存储区的位置,将第二预设值写入所述第六存储区中;
A10、将所述第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将所述第二存储单元中的数据写入所述第六存储区,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化;
A11、对所述第一存储区中的数据进行初始化;
A12、根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区;根据所述第一存储区的大小,对所述第一指针寄存器中的数据和所述第一存储单元中的数据进行更新;
A13、根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A14、判断所述第一存储单元中的数据是否大于零,如果大于零,则返回步骤A11;否则,执行步骤A15;
A15、将所述第三存储区中的数据复制到第八存储区中;
A16、对所述第一存储区、所述第二存储区和所述第三存储区中的数据进行初始化;
A17、将所述第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对所述第一存储单元中的数据进行赋值;
A18、将所述第五存储区中的数据复制到所述第三存储区;
A19、根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A20、将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新;
A21、根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中;
A22、将所述第一存储单元中的数据与所述第三预设值的乘积赋值给所述第二存储单元中的数据,将所述第二存储单元中的数据写入所述第一存储区;
A23、根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;
A24、从所述第三存储区中读取一个字节的数据,将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据;
A25、根据读取到的预设数量字节的数据,输出数据处理结果。
2.如权利要求1所述的方法,其特征在于,所述预设数量为第 六预设值;
所述将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据,具体包括:
B1、将所述读取到的一个字节的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据;
B2、对第三存储单元中的数据和第四存储单元中的数据进行初始化;
B3、根据所述第二指针寄存器中的数据,从所述第三存储区读取一个字节的数据,将读取到的数据与所述第四存储单元中的数据进行或运算,将运算结果赋值给所述第四存储单元中的数据,将所述第三存储单元中的数据加第一预设步长;
B4、判断所述第三存储单元中的数据是否等于第六预设值,如果等于,则执行步骤B6;否则,执行步骤B5;
B5、将所述第二指针寄存器中的数据加第二预设步长,将所述第四存储单元中的数据左移8位,并返回步骤B3;
B6、将所述第四存储单元中的数据作为从所述第三存储区中读取到的预设数量字节的数据。
3.如权利要求2所述的方法,其特征在于,所述根据所述第二指针寄存器中的数据,从所述第三存储区读取一个字节的数据,具体为:
从地址pD3+offset2读取一个字节的数据,其中,pD3为所述第三存储区的首地址,offset2为所述第二指针寄存器中的数据。
4.如权利要求2所述的方法,其特征在于,步骤A25,具体为:
将所述第四存储单元中的数据作为数据处理结果输出;
或者,
C1、将所述第四存储单元中的数据与第七预设值进行与运算,将所述运算结果赋值给所述第四存储单元中的数据;
C2、对第五存储单元中的数据进行初始化;
C3、判断所述第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤C4;否则,执行步骤C5;
C4、将所述第四存储单元中的数据对第九预设值取余,并根据所述第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区;将所述第四存储单元中的数据除以第九预设值得到的商赋值给所述第四存储单元中的数据,将所述第五存储单元中的数据加第三预设步长,并返回步骤C3;
C5、根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,将读取到的数据作为数据处理结果输出;
或者,
D1、将所述第四存储单元中的数据与第七预设值进行与运算,将所述运算结果赋值给所述第四存储单元中的数据;
D2、对第五存储单元中的数据进行初始化;
D3、判断所述第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤D4;否则,执行步骤D5;
D4、将所述第四存储单元中的数据对第九预设值取余,并根据所述第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区;将所述第四存储单元中的数据除以第九预设值得到的商赋值给所述第四存储单元中的数据,将所述第五存储单元中的数据加第三预设步长,并返回步骤D3;
D5、根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,根据读取到的数据,计算对应的循环冗余校验码,将所述读取到的数据和所述校验码作为数据处理结果输出。
5.如权利要求4所述的方法,其特征在于,所述根据第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区,具体为:
将所述取余得到的结果存储到地址pD9+i,其中,pD9为所述第九存储区的首地址,i为所述第五存储单元中的数据;
所述根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,具体为:
读取保存在从地址pD9到地址pD9+i-1之间的空间的数据,其中,pD9为所述第九存储区的首地址,i为所述第五存储单元中的数据。
6.如权利要求1所述的方法,其特征在于,步骤A8之前,还包括:
将第十存储区中的数据写入所述第六存储区,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;
根据所述第十存储区中的数据被写入到所述第六存储区的位置,将第十预设值写入所述第六存储区中,并根据写入到所述第六存储区中的所述第十预设值的长度,对所述第一存储单元中的数据进行更新;
根据所述第十预设值被写入到所述第六存储区的位置,将第十一存储区中的数据写入所述第六存储区中,并根据所述第十一存储区中的数据的长度,对所述第一存储单元中的数据进行更新;
步骤A8,具体为:
根据所述第十一存储区中的数据被写入到所述第六存储区的位置,将所述第七存储区中的数据写入所述第六存储区中,并根据所述第七存储区中的数据的长度,对所述第一存储单元中的数据进行更新。
7.如权利要求6所述的方法,其特征在于,所述将第十存储区中的数据写入所述第六存储区,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
将所述第十存储区中的数据复制到以所述第六存储区的首地址为起始位置、大小与所述第十存储区的大小相等的空间,将所述第一存储单元中的数据加被写入到所述第六存储区中的数据所占的字节数。
8.如权利要求6所述的方法,其特征在于,所述根据所述第十存储区中的数据被写入到所述第六存储区的位置,将第十预设值写入所述第六存储区中,并根据写入到所述第六存储区中的所述第十预设值的长度,对所述第一存储单元中的数据进行更新,具体为:
确定所述第十存储区中的数据被写入到所述第六存储区的位置,并将所述第十预设值写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的第十预设值所占的字节数。
9.如权利要求6所述的方法,其特征在于,所述根据所述第十预设值被写入到所述第六存储区的位置,将第十一存储区中的数据写入所述第六存储区中,并根据所述第十一存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
确定所述第十预设值被写入到所述第六存储区的位置,并将所述第十一存储区中的数据写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的、所述第十一存储区中的数据所占的字节数。
10.如权利要求6所述的方法,其特征在于,所述根据所述第十一存储区中的数据被写入到所述第六存储区的位置,将所述第七存储区中的数据写入所述第六存储区中,并根据所述第七存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
确定所述第十一存储区中的数据被写入到所述第六存储区的位置,并将所述第七存储区中的数据写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的、所述第七存储区中的数据所占的字节数。
11.如权利要求1所述的方法,其特征在于,所述将第四存储区中的数据复制到所述第一存储区中,具体为:
将所述第四存储区中的数据复制到以所述第一存储区的首地址为起始位置、大小与所述第四存储区的大小相等的空间;
所述根据所述第一存储区的大小对第一存储单元中的数据进行赋值,具体为:
将所述第一存储单元中的数据赋值为第一存储区中的数据所占的字节数。
12.如权利要求1所述的方法,其特征在于,步骤A8,具体为:
将所述第七存储区中的数据复制到以所述第六存储区的首地址为起始位置、大小与所述第七存储区的大小相等的空间,将所述第一存储单元中的数据加被写入到所述第六存储区中的数据所占的字节数。
13.如权利要求1所述的方法,其特征在于,将所述第二存储单元中的数据写入所述第六存储区,具体为:
将所述第二存储单元中的数据写入到以所述第六存储区中的预设位置为结束位置、大小与所述第二存储单元中的数据所占的空间大小相等的空间。
14.如权利要求1所述的方法,其特征在于,步骤A12,具体为:
从地址pD6+offset1开始,从所述第六存储区中选取大小与所述第一存储区的大小相同的数据,并将选取的数据复制到所述第一存储区,将所述第一指针寄存器中的数据加所述第一存储区中的数据所占的字节数,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,其中,pD6为所述第六存储区的首地址,offset1为所述第一指针寄存器中的数据。
15.如权利要求1所述的方法,其特征在于,步骤A20,具体为:
将所述第八存储区中的数据复制到以所述第一存储区的首地址为起始位置、大小与所述第八存储区的大小相等的空间,将所述第一存储单元中的数据加写入到所述第一存储区中的数据所占的字节数。
16.如权利要求1所述的方法,其特征在于,步骤A21,具体为:
确定所述第八存储区中的数据被写入到所述第一存储区的位置,并将所述第二预设值写入到所述第一存储区中与确定出的位置相邻的位置。
17.如权利要求1所述的方法,其特征在于,所述将所述第二存储单元中的数据写入所述第一存储区,具体为:
将所述第二存储单元中的数据写入以所述第一存储区中的预设位置为结束位置、大小与所述第二存储单元中的数据所占的空间大小相等的空间。
18.一种数据处理装置,其特征在于,包括检测模块、第一判断模块、第一处理模块、第二处理模块、第二判断模块和第三处理模块,其中,
所述检测模块,用于检测数据处理信号;
所述第一判断模块,用于判断所述检测模块是否检测到所述数据处理信号,在判断所述检测模块检测到所述数据处理信号时,触发所述第一处理模块;
所述第一处理模块,用于对第一存储区、第二存储区和第三存储区中的数据进行初始化;将第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第一预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对第一存储单元中的数据进行赋值;将第五存储区中的数据复制到第三存储区;根据所述第三存储区中的数据,对第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;对第六存储区中的数据进行初始化;将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;根据所述第七存储区中的数据被写入到所述第六存储区的位置,将第二预设值写入所述第六存储区中;将所述第一存储单元中的数据与第三预设值的乘积赋值给第二存储单元中的数据,将所述第二存储单元中的数据写入所述第六存储区,将所述第一存储单元 中的数据减所述第一存储区中的数据所占的字节数,对第一指针寄存器中的数据进行初始化,并触发所述第二处理模块;
所述第二处理模块,用于对所述第一存储区中的数据进行初始化;根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区;根据所述第一存储区的大小,对所述第一指针寄存器中的数据和所述第一存储单元中的数据进行更新;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中,并触发所述第二判断模块;
所述第二判断模块,用于判断所述第一存储单元中的数据是否大于零,如果大于零,则触发所述第二处理模块;否则,触发所述第三处理模块;
所述第三处理模块,用于将所述第三存储区中的数据复制到第八存储区中;对所述第一存储区、所述第二存储区和所述第三存储区中的数据进行初始化;将所述第四存储区中的数据复制到所述第一存储区中,将所述第一存储区中的数据与第四预设值进行异或运算,将运算结果存储到所述第一存储区中,并根据所述第一存储区的大小对所述第一存储单元中的数据进行赋值;将所述第五存储区中的数据复制到所述第三存储区;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新;根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中;将所述第一存储单元中的数据与所述第三预设值的乘积赋值给所述第二存储单元中的数据,将所述第二存储单元中的数据写入所述第一存储区;根据所述第三存储区中的数据,对所述第一存储区中的数据进行散列运算,将运算结果存储到所述第三存储区中;从所述第三存储区中读取一个字节的数据,将读取到的一个 字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据;根据读取到的预设数量字节的数据,输出数据处理结果。
19.如权利要求18所述的装置,其特征在于,所述预设数量为第六预设值;
所述将读取到的一个字节的数据的取值作为索引,从所述第三存储区中读取预设数量字节的数据,具体包括:
B1、将所述读取到的一个字节的数据与第五预设值进行与运算,将运算结果赋值给第二指针寄存器中的数据;
B2、对第三存储单元中的数据和第四存储单元中的数据进行初始化;
B3、根据所述第二指针寄存器中的数据,从所述第三存储区读取一个字节的数据,将读取到的数据与所述第四存储单元中的数据进行或运算,将运算结果赋值给所述第四存储单元中的数据,将所述第三存储单元中的数据加第一预设步长;
B4、判断所述第三存储单元中的数据是否等于第六预设值,如果等于,则执行步骤B6;否则,执行步骤B5;
B5、将所述第二指针寄存器中的数据加第二预设步长,将所述第四存储单元中的数据左移8位,并返回步骤B3;
B6、将所述第四存储单元中的数据作为从所述第三存储区中读取到的预设数量字节的数据。
20.如权利要求19所述的装置,其特征在于,所述根据所述第二指针寄存器中的数据,从所述第三存储区读取一个字节的数据,具体为:
从地址pD3+offset2读取一个字节的数据,其中,pD3为所述第三存储区的首地址,offset2为所述第二指针寄存器中的数据。
21.如权利要求19所述的装置,其特征在于,所述根据读取到的预设数量字节的数据,输出数据处理结果,具体包括:
将所述第四存储单元中的数据作为数据处理结果输出;
或者,
C1、将所述第四存储单元中的数据与第七预设值进行与运算,将所述运算结果赋值给所述第四存储单元中的数据;
C2、对第五存储单元中的数据进行初始化;
C3、判断所述第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤C4;否则,执行步骤C5;
C4、将所述第四存储单元中的数据对第九预设值取余,并根据所述第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区;将所述第四存储单元中的数据除以第九预设值得到的商赋值给所述第四存储单元中的数据,将所述第五存储单元中的数据加第三预设步长,并返回步骤C3;
C5、根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,将读取到的数据作为数据处理结果输出;
或者,
D1、将所述第四存储单元中的数据与第七预设值进行与运算,将所述运算结果赋值给所述第四存储单元中的数据;
D2、对第五存储单元中的数据进行初始化;
D3、判断所述第五存储单元中的数据是否小于第八预设值,如果小于,则执行步骤D4;否则,执行步骤D5;
D4、将所述第四存储单元中的数据对第九预设值取余,并根据所述第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区;将所述第四存储单元中的数据除以第九预设值得到的商赋值给所述第四存储单元中的数据,将所述第五存储单元中的数据加第三预设步长,并返回步骤D3;
D5、根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,根据读取到的数据,计算对应的循环冗余校验码CRC码,将所述读取到的数据和所述CRC码 作为数据处理结果输出。
22.如权利要求21所述的装置,其特征在于,所述根据第五存储单元中的数据和第九存储区的首地址,将取余得到的结果存储到所述第九存储区,具体为:
将所述取余得到的结果存储到地址pD9+i,其中,pD9为所述第九存储区的首地址,i为所述第五存储单元中的数据;
所述根据所述第五存储单元中的数据和所述第九存储区的首地址,读取存储在所述第九存储区中的数据,具体为:
读取保存在从地址pD9到地址(pD9+i-1)之间的空间的数据,其中,pD9为所述第九存储区的首地址,i为所述第五存储单元中的数据。
23.如权利要求18所述的装置,其特征在于,所述第一处理模块,还用于在将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新之前,将第十存储区中的数据写入所述第六存储区,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新;根据所述第十存储区中的数据被写入到所述第六存储区的位置,将第十预设值写入所述第六存储区中,并根据写入到所述第六存储区中的所述第十预设值的长度,对所述第一存储单元中的数据进行更新;根据所述第十预设值被写入到所述第六存储区的位置,将第十一存储区中的数据写入所述第六存储区中,并根据所述第十一存储区中的数据的长度,对所述第一存储单元中的数据进行更新;
所述将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体包括:
根据所述第十一存储区中的数据被写入到所述第六存储区的位置,将所述第七存储区中的数据写入所述第六存储区中,并根据所述第七存储区中的数据的长度,对所述第一存储单元中的数据进行更 新。
24.如权利要求23所述的装置,其特征在于,所述将第十存储区中的数据写入所述第六存储区,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
将所述第十存储区中的数据复制到以所述第六存储区的首地址为起始位置、大小与所述第十存储区的大小相等的空间,将所述第一存储单元中的数据加被写入到所述第六存储区中的数据所占的字节数。
25.如权利要求23所述的装置,其特征在于,所述根据所述第十存储区中的数据被写入到所述第六存储区的位置,将第十预设值写入所述第六存储区中,并根据写入到所述第六存储区中的所述第十预设值的长度,对所述第一存储单元中的数据进行更新,具体为:
确定所述第十存储区中的数据被写入到所述第六存储区的位置,并将所述第十预设值写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的第十预设值所占的字节数。
26.如权利要求23所述的装置,其特征在于,所述根据所述第十预设值被写入到所述第六存储区的位置,将第十一存储区中的数据写入所述第六存储区中,并根据所述第十一存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
确定所述第十预设值被写入到所述第六存储区的位置,并将所述第十一存储区中的数据写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的、所述第十一存储区中的数据所占的字节数。
27.如权利要求23所述的装置,其特征在于,所述根据所述第十一存储区中的数据被写入到所述第六存储区的位置,将所述第七存储区中的数据写入所述第六存储区中,并根据所述第七存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
确定所述第十一存储区中的数据被写入到所述第六存储区的位置,并将所述第七存储区中的数据写入到所述第六存储区中与确定出的位置相邻的位置,将所述第一存储单元中的数据加被写入到所述第六存储区中的、所述第七存储区中的数据所占的字节数。
28.如权利要求18所述的装置,其特征在于,所述将第四存储区中的数据复制到所述第一存储区中,具体为:
将所述第四存储区中的数据复制到以所述第一存储区的首地址为起始位置、大小与所述第四存储区的大小相等的空间;
所述根据所述第一存储区的大小对第一存储单元中的数据进行赋值,具体为:
将所述第一存储单元中的数据赋值为第一存储区中的数据所占的字节数。
29.如权利要求18所述的装置,其特征在于,将第七存储区中的数据写入所述第六存储区中,并根据写入到所述第六存储区中的数据的长度,对所述第一存储单元中的数据进行更新,具体为:
将所述第七存储区中的数据复制到以所述第六存储区的首地址为起始位置、大小与所述第七存储区的大小相等的空间,将所述第一存储单元中的数据加被写入到所述第六存储区中的数据所占的字节数。
30.如权利要求18所述的装置,其特征在于,将所述第二存储单元中的数据写入所述第六存储区,具体为:
将所述第二存储单元中的数据写入到以所述第六存储区中的预设位置为结束位置、大小与所述第二存储单元中的数据所占的空间大小相等的空间。
31.如权利要求18所述的装置,其特征在于,根据所述第一指针寄存器中的数据和所述第一存储区的大小,从所述第六存储区中选取数据,并将选取的数据复制到所述第一存储区,具体为:
从地址(pD6+offset1)开始,从所述第六存储区中选取大小与所 述第一存储区的大小相同的数据,并将选取的数据复制到所述第一存储区,将所述第一指针寄存器中的数据加所述第一存储区中的数据所占的字节数,将所述第一存储单元中的数据减所述第一存储区中的数据所占的字节数,其中,pD6为所述第六存储区的首地址,offset1为所述第一指针寄存器中的数据。
32.如权利要求18所述的装置,其特征在于,将所述第八存储区中的数据复制到所述第一存储区中,并根据所述第八存储区的大小对所述第一存储单元中的数据进行更新,具体为:
将所述第八存储区中的数据复制到以所述第一存储区的首地址为起始位置、大小与所述第八存储区的大小相等的空间,将所述第一存储单元中的数据加写入到所述第一存储区中的数据所占的字节数。
33.如权利要求18所述的装置,其特征在于,根据所述第八存储区中的数据被写入到所述第一存储区的位置,将所述第二预设值写入所述第一存储区中,具体为:
确定所述第八存储区中的数据被写入到所述第一存储区的位置,并将所述第二预设值写入到所述第一存储区中与确定出的位置相邻的位置。
34.如权利要求18所述的装置,其特征在于,所述将所述第二存储单元中的数据写入所述第一存储区,具体为:
将所述第二存储单元中的数据写入以所述第一存储区中的预设位置为结束位置、大小与所述第二存储单元中的数据所占的空间大小相等的空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210270387.3A CN102831347B (zh) | 2012-07-31 | 2012-07-31 | 一种数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210270387.3A CN102831347B (zh) | 2012-07-31 | 2012-07-31 | 一种数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102831347A CN102831347A (zh) | 2012-12-19 |
CN102831347B true CN102831347B (zh) | 2015-04-15 |
Family
ID=47334480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210270387.3A Active CN102831347B (zh) | 2012-07-31 | 2012-07-31 | 一种数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102831347B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461054B (zh) * | 2014-12-16 | 2017-11-24 | 飞天诚信科技股份有限公司 | 一种限制字符串长度的输入装置及方法 |
CN104899522B (zh) * | 2015-06-09 | 2018-01-30 | 网易(杭州)网络有限公司 | 一种数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1371059A (zh) * | 2001-02-16 | 2002-09-25 | 松下电器产业株式会社 | 数据发布系统 |
CN101578599A (zh) * | 2006-08-07 | 2009-11-11 | 米谋萨系统有限公司 | 数据的动态大块到砖块转换 |
CN102411489A (zh) * | 2011-10-18 | 2012-04-11 | 飞天诚信科技股份有限公司 | 一种嵌入式系统中的数据处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9400799B2 (en) * | 2010-10-04 | 2016-07-26 | Dell Products L.P. | Data block migration |
-
2012
- 2012-07-31 CN CN201210270387.3A patent/CN102831347B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1371059A (zh) * | 2001-02-16 | 2002-09-25 | 松下电器产业株式会社 | 数据发布系统 |
CN101578599A (zh) * | 2006-08-07 | 2009-11-11 | 米谋萨系统有限公司 | 数据的动态大块到砖块转换 |
CN102411489A (zh) * | 2011-10-18 | 2012-04-11 | 飞天诚信科技股份有限公司 | 一种嵌入式系统中的数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102831347A (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101256561B (zh) | 一种存储、访问数据库数据的方法、装置及系统 | |
US7856415B2 (en) | System and method for mapping events into a data structure | |
CN109510686B (zh) | 一种通用的二进制流数据转换处理方法 | |
CN103236846A (zh) | 一种工业实时数据压缩方法及装置 | |
US20220191113A1 (en) | Method and apparatus for monitoring abnormal iot device | |
CN102831347B (zh) | 一种数据处理方法和装置 | |
CN106856432A (zh) | 多变量数字签名装置 | |
US11379421B1 (en) | Generating readable, compressed event trace logs from raw event trace logs | |
US9791911B2 (en) | Determining whether a change in power usage is abnormal when power usage exceeds a threshold based on additional metrics of components in an electronic device | |
US10025812B2 (en) | Identifying corrupted text segments | |
CN116049905B (zh) | 一种基于检测系统文件变化的防篡改系统 | |
CN117667932A (zh) | 一种向量数据库存储格式自定义和转换的方法和系统 | |
WO2017157038A1 (zh) | 数据处理的方法、装置和设备 | |
US7840726B2 (en) | System and method for identifying and transferring serial data to a programmable logic device | |
US20100191693A1 (en) | Segmenting Sequential Data with a Finite State Machine | |
WO2015116762A1 (en) | Optimized data condenser and method | |
US20110313975A1 (en) | Validating files using a sliding window to access and correlate records in an arbitrarily large dataset | |
CN113495901B (zh) | 一种面向可变长数据块的快速检索方法 | |
CN109542904A (zh) | 业务数据处理方法、装置、服务器和介质 | |
CN114550809A (zh) | 多存储卡的测试方法、装置、计算机设备及存储介质 | |
JP7140268B2 (ja) | 警告装置、制御方法、及びプログラム | |
CN102956270B (zh) | 移动存储设备检测方法和装置 | |
CN102969026B (zh) | 基于数据处理系统的移动存储设备检测方法和装置 | |
CN109816536A (zh) | 清单去重方法、装置和计算机设备 | |
CN103258035A (zh) | 数据处理的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |