CN107423630A - 数据处理方法和装置 - Google Patents

数据处理方法和装置 Download PDF

Info

Publication number
CN107423630A
CN107423630A CN201710644684.2A CN201710644684A CN107423630A CN 107423630 A CN107423630 A CN 107423630A CN 201710644684 A CN201710644684 A CN 201710644684A CN 107423630 A CN107423630 A CN 107423630A
Authority
CN
China
Prior art keywords
data
initial data
operation result
preset group
sub
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.)
Pending
Application number
CN201710644684.2A
Other languages
English (en)
Inventor
黎定松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710644684.2A priority Critical patent/CN107423630A/zh
Publication of CN107423630A publication Critical patent/CN107423630A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种数据处理方法和装置。其中,该数据处理方法包括:获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;对原始数据和随机数据进行运算,得到第一运算结果;将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。本发明解决了相关技术数据容易被篡改的技术问题。

Description

数据处理方法和装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据处理方法和装置。
背景技术
目前,在对数据进行处理时,本领域常用的加密算法为异或加密结构。该加密结构通常会存储一个随机值和一个被异或处理以后的结果值。比如,在对数据进行加密时,将原始数据与随机值进行异或运算,得到结果值,从而实现了对原始数据的加密。在对结果值进行解密时,将结果值与随机值进行异或处理,得到原始数据值。
上述加密算法虽然简单、高效,可以隐藏原始数据,但是也有明显的缺点。比如,该算法不容易隐藏数据变化的趋势,可以通过模糊搜索定位到该加密结构的内存地址,可以通过数据变大趋势,数据变小趋势定位到该加密结构的内存地址,通过修改该加密结构中的随机值和结果值,便能够得到某一预期的值,进而达到对数据进行篡改的目的。
由于使用异或加密结构的逻辑数据容易被篡改,目前在外网已经有多起被篡改该的案例。
针对上述数据容易被篡改的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据处理方法和装置,以至少解决相关技术数据容易被篡改的技术问题。
根据本发明实施例的一个方面,提供了一种数据处理方法。该数据处理方法包括:获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;对原始数据和随机数据进行运算,得到第一运算结果;将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。
根据本发明实施例的另一方面,还提供了一种数据处理装置。该装置包括:获取单元,用于获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;第一运算单元,用于对原始数据和随机数据进行运算,得到第一运算结果;第一存储单元,用于将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;第二存储单元,用于将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。
根据本发明实施例的另一方面,还提供了一种存储介质。该存储介质包括存储的程序,其中,程序运行时执行本发明实施例的数据处理方法。
根据本发明实施例的另一方面,还提供了一种电子装置。该电子装置包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行本发明实施例的数据处理方法。
在本发明实施例中,获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;对原始数据和随机数据进行运算,得到第一运算结果;将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。由于通过存储数据的多条索引信息,隐藏原始数据的变化趋势,数据结构的各数据元素在原始数据发生变化时,索引信息并不会发生变化,不容易通过原始数据,以及原始数据的变化趋势来定位到内存地址,达到提高数据安全性的技术效果,进而解决了相关技术数据容易被篡改的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据处理方法的硬件环境的示意图;
图2是根据本发明实施例的一种数据处理方法的流程图;
图3是根据本发明实施例的另一种数据处理方法的流程图;
图4是根据本发明实施例的另一种数据处理方法的流程图;
图5是根据本发明实施例的一种将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中的方法的流程图;
图6是根据本发明实施例的一种数据处理装置的示意图;以及
图7是根据本发明实施例的一种的电子装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种数据处理方法的实施例。
可选地,在本实施例中,上述数据处理方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。图1是根据本发明实施例的一种数据处理方法的硬件环境的示意图。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的数据处理方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的数据处理方法也可以是由安装在其上的客户端来执行。
图2是根据本发明实施例的一种数据处理方法的流程图。如图2所示,该数据处理方法可以包括以下步骤:
步骤S202,获取原始数据和随机数据。
在本申请上述步骤S202提供的技术方案中,获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据。
该实施例的原始数据为待进行加密的数据,可以为原始数值,原始数据的数据类型可以为C++语言中支持的一些数据类型,比如,为int类型,float类型,double类型,char类型等,优选地,该实施例的原始数据类型为int类型和float类型。该实施例的随机数据可以由系统随机产生,可以为随机值(randValue),该随机数据用于和原始数据进行运算。获取原始数据和随机数据。
可选地,该实施例的原始数据为游戏应用中的数据,比如,为重要的游戏逻辑数据,该游戏逻辑值可以为游戏应用中使用到的生命值、技能持续时间、攻击力等,以为用户带来不同的体验,此处不做限制。
该实施例的原始数据在存储时具有一定的变化趋势,比如,数据变大的趋势,数据变小的趋势。
步骤S204,对原始数据和随机数据进行运算,得到第一运算结果。
在本申请上述步骤S204提供的技术方案中,对原始数据和随机数据进行运算,得到第一运算结果。
在获取原始数据和随机数据之后,对原始数据和随机数据进行运算,该运算可以为异或运算,也即,原始数据和随机数据用“1”或“0”表示,将原始数据与随机数据进行异或运算,得到第一运算结果。异或运算也即半加运算,其运算法则相当于不带进位的二进制加法,其中,在二进制下用“1”表示真,用“0”表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0,需要说明的是,这些法则与加法是相同的,只是不带进位。
需要说明的是,该实施例对原始数据和随机数据进行异或运算,仅为本发明实施例的优选实施方式,并不代表本发明实施例的运算仅为异或运算,其它可以实现原始数据和随机数据在加密过程中的运算的方法都在本发明实施例的范围之内,此处不再一一举例说明。
步骤S206,将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中。
在本申请上述步骤S206提供的技术方案中,将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中。
在对原始数据和随机数据进行运算,得到第一运算结果之后,将第一运算结果拆分为多个第一子运算结果,比如,将第一运算结果拆分为多个字节数据,该多个字节数据组成第一运算结果。向第一预设数组分散存储第一运算结果包括的多个第一子运算结果,可以向第一预设数组随机存储该第一运算结果的多个第一子运算结果,这样第一运算结果的存储并无规律可循,降低了数据被间接搜索,通过一定的偏移定位到该实施例的加密结构,以对数据进行篡改的可能性。
可选地,该实施例将第一运算结果拆分为四个字节数据,这四个字节数据分散存储于第一预设数组中,该第一预设数组可以为字节数组(globalBytes),也即,全局字节数组,该字节数组用于分散存储拆分第一运算结果得到的字节数据。
步骤S208,将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中。
在本申请上述步骤S208提供的技术方案中,将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。
该实施例的第二预设数组用于分散存储多个第一子运算结果在第一预设数组中的多条第一索引信息,多条第一索引信息对应系统不同的内存地址,也即,通过一条第一索引信息便可以确定对应的内存地址。多个第一子运算结果与多条第一索引信息相对应,也即,通过每条第一索引信息在第一预设数组中索引对应的一条第一子运算结果。
可选地,第二预设数组为分散存储索引数组(index[]),用于分散存储字节数组的不同内存地址,包括不同内存地址的索引信息,比如,将第一运算结果拆分为的四个字节数据在字节数组中的索引信息,存储在上述分散存储索引数组中。
优选地,该实施例的第二预设数组使用数据类型为2个字节的ushort类型,从而减少该实施例的加密结构的内存,因此第一预设数组的大小的最大限制可以为64K,在能同时使用该实施例的加密结构的最大数量可以为16K。加密结构的内存大小可以为16字节,是原始数据类型4个字节的4倍。
在向第一预设数组分散存储第一运算结果的多个第一子运算结果之后,将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,从而实现了对原始数据的加密,实现了自定义加密结构,该自定义加密结构还重载了一些原始数据类型的操作符,比如,重载了+,-,+=,-=等操作符,代替了原始数据的数据类型来使用,隐藏了原始数据。
由于该实施例的加密结构存储的是多条第一索引信息,因此该数据结构的各数据元素在周边的原始数据发生变化时,多条第一索引信息并不会发生变化,因此不容易通过周边的原始数据,以及原始数据的变化趋势来定位到本加密结构的内存地址。即使通过间接的方式定位到本加密结构的内存地址,也即,通过定位本结构周边的数据内存地址,再偏移一定的位置得到本加密结构的内存地址,也只能修改到第一索引信息,而不容易修改第一索引信息对应的原始数据,因此不容易将原始数据修改为某一个确定的值。
通过上述步骤S202至步骤S208,获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;对原始数据和随机数据进行运算,得到第一运算结果;将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引,由于通过存储数据的多条索引信息,隐藏原始数据的变化趋势,数据结构的各数据元素在原始数据发生变化时,索引信息并不会发生变化,不容易通过原始数据,以及原始数据的变化趋势来定位到内存地址,达到提高数据安全性的技术效果,进而解决了相关技术数据容易被篡改的技术问题。
作为一种可选的实施方式,在步骤S202,获取原始数据和随机数据之后,该数据处理方法还包括:按照预设加密算法对原始数据进行加密,得到第一加密数据;确定第一加密数据为原始数据的第一备份数据;将第一备份数据存储在第三预设数组中。
图3是根据本发明实施例的另一种数据处理方法的流程图。如图3所示,该数据处理方法包括以下步骤:
步骤S301,按照预设加密算法对原始数据进行加密,得到第一加密数据。
在本申请上述步骤S301提供的技术方案中,按照预设加密算法对原始数据进行加密,得到第一加密数据。
该实施例的预设加密算法可以为异或加密算法,用于对原始数据进行加密。在获取原始数据和随机数据之后,按照预设加密算法对原始数据进行加密,得到第一加密数据,该第一加密数据可以为原始数据的备份数据。
需要说明的是,该实施例按照异或加密算法对原始数据进行加密,仅为本发明实施例的优选实施方式,并不代表本发明实施例的预设加密运算仅为异或加密运算,其它可以实现对原始数据进行加密以对原始数据进行备份的方法都在本发明实施例的范围之内,此处不再一一举例说明。
步骤S302,确定第一加密数据为原始数据的第一备份数据。
在本申请上述步骤S302提供的技术方案中,确定第一加密数据为原始数据的第一备份数据。
在按照预设加密算法对原始数据进行加密,得到第一加密数据之后,确定第一加密数据为原始数据的第一备份数据,从而达到对原始数据进行备份的目的,进而达到了采用异或加密结构对原始数据进行备份的目的。
步骤S303,将第一备份数据存储在第三预设数组中。
在本申请上述步骤S303提供的技术方案中,将第一备份数据存储在第三预设数组中,其中,第三预设数组用于存储多份备份数据,第一备份数据在第三预设数组中由第二索引信息进行索引,第三预设数组中存储的第一备份数据用于验证原始数据是否被篡改。
在确定第一加密数据为原始数据的第一备份数据之后,向第三预设数组存储第一备份数据,以在数据解密过程中的交叉验证中,验证原始数据是否被篡改。可选地,第三预设数组为异或加密结构数组checkData,该异或加密结构数组用于存储多份数据的备份数据,多份数据的备份数据在第三预设数组中通过对应的索引信息索引得到,第一备份数据在第三预设数组中由第二索引信息进行索引,比如,第一备份数据在第三预设数组中由校检索引值checkIndex索引得到。
该实施例在获取原始数据和随机数据之后,按照预设加密算法对原始数据进行加密,得到第一加密数据;确定第一加密数据为原始数据的第一备份数据;将第一备份数据存储在第三预设数组中,其中,第三预设数组用于存储多份备份数据,第一备份数据在第三预设数组中由第二索引信息进行索引,第三预设数组中存储的第一备份数据用于验证原始数据是否被篡改,从而实现了对原始数据的备份,以在数据解密过程中的交叉验证中,验证原始数据是否被篡改,达到了提高数据安全性的技术效果。
作为一种可选的实施方式,在步骤S208,将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,该数据处理方法还包括:组合通过多条第一索引信息从第二预设数组中读取的多个第二子运算结果,得到第二运算结果;对第二运算结果和随机数据进行运算,得到第一原始数据;对通过第二索引信息在第三预设数组中进行索引得到的第二备份数据按照预设解密算法进行解密,得到第二原始数据;在第一原始数据和第二原始数据相同的情况下,返回原始数据;在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改。
图4是根据本发明实施例的另一种数据处理方法的流程图。如图4所示,该数据处理方法包括以下步骤:
步骤S401,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果。
在本申请上述步骤S401提供的技术方案中,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果。
在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,在对数据进行使用的过程中,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果。可选地,第二预设数组为字节数组,通过分散存储索引数组(index[4])从字节数组中读取4个字节数据,该四个字节数据为多个第二子运算结果。在这个过程中,第二子运算结果可以与第一子运算结果相同,也可以不同。在原始数据未被篡改的情况下,第二子运算结果与第一子运算结果相同,在第一子运算结果篡改的情况下,第二子运算结果与第一子运算结果不同。
步骤S402,组合多个第二子运算结果,得到第二运算结果。
在本申请上述步骤S402提供的技术方案中,组合多个第二子运算结果,得到第二运算结果。
在通过多条第一索引信息从第二预设数组中读取多个第二子运算结果之后,将多个第二子运算结果组合为第二运算结果。该第二运算结果可以与第一运算结果相同,也可以不同。在原始数据未被篡改的情况下,第二运算结果与第一运算结果相同,在原始数据被篡改的情况下,第二运算结果与第一运算结果不相同。
步骤S403,对第二运算结果和随机数据进行运算,得到第一原始数据。
在本申请上述步骤S403提供的技术方案中,对第二运算结果和随机数据进行运算,得到第一原始数据。
在组合多个第二子运算结果,得到第二运算结果之后,对第二运算结果和随机数据进行运算,该运算可以为异或运算,也即,对第二运算结果和随机数据进行异或运算,得到第一原始数据。
步骤S404,通过第二索引信息在第三预设数组中进行索引,得到第二备份数据。
在本申请上述步骤S404提供的技术方案中,通过第二索引信息在第三预设数组中进行索引,得到第二备份数据。
第三预设数组用于存储多份备份数据,每份备份数据可以通过对应的索引信息索引得到。在对第二运算结果和随机数据进行运算,得到第一原始数据之后,通过第二索引信息在第三预设数组中进行索引,得到第二备份数据。该第二备份数据可以与第一备份数据相同,也可以不同。在原始数据未被篡改的情况下,第二备份数据与第一备份数据相同,在原始数据被篡改的情况下,第二备份数据与第一备份数据不相同。
步骤S405,对第二备份数据按照预设解密算法进行解密,得到第二原始数据。
在本申请上述步骤S405提供的技术方案中,对第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,预设解密算法与预设加密算法相对应。
在通过第二索引信息在第三预设数组中进行索引,得到第二备份数据之后,对第二备份数据按照与对原始数据进行加密的预设加密算法相对应的预设解密算法进行解密,得到第二原始数据。也即,在不确定原始数据是否被篡改的情况下,对第三预设数组中存储的备份数据进行解密,得到解密后的原始数据。
步骤S406,在第一原始数据和第二原始数据相同的情况下,返回原始数据。
在本申请上述步骤S406提供的技术方案中,在第一原始数据和第二原始数据相同的情况下,返回原始数据。
在对第二运算结果和随机数据进行运算,得到第一原始数据之后,以及在对第二备份数据按照预设解密算法进行解密,得到第二原始数据之后,判断第一原始数据和第二原始数据是否相同。如果判断出第一原始数据和第二原始数据相同,则确定原始数据未被篡改。
步骤S407,在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改。
在本申请上述步骤S407提供的技术方案中,在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改。
在判断第一原始数据和第二原始数据是否相同之后,如果判断出第一原始数据和第二原始数据不同,确定加密结构曾被篡改过,原始数据被篡改,从而实现了对数据在解密过程中的交叉验证。
该实施例在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果;组合多个第二子运算结果,得到第二运算结果;对第二运算结果和随机数据进行运算,得到第一原始数据;通过第二索引信息在第三预设数组中进行索引,得到第二备份数据;对第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,预设解密算法与预设加密算法相对应;在第一原始数据和第二原始数据相同的情况下,返回原始数据;在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改,达到了提高数据安全性的技术效果。
作为一种可选的实施方式,在确定原始数据被篡改时,该数据处理方法还包括:返回用于指示原始数据被篡改过的预设值,其中,预设值还用于使原始数据在运行过程中出现异常。
在确定原始数据被篡改时,如果继续使用篡改过的数据,会影响数据运行的正确性和公平性,进而影响用户的体验。此时返回用于指示原始数据被篡改过的预设值,比如,返回无效值0,该实施例还可以指定其它数值为无效值,此处不做限制。这样在返回无效值之后,原始数据在运行过程中的逻辑不通,无法正常运行,从而避免了数据运行的不正确和不公平的问题产生。
作为一种可选的实施方式,步骤S407,在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改包括:在第一索引信息和/或第二索引信息被修改的情况下,确定第一原始数据和第二原始数据不相同,并确定原始数据被篡改。
如果第一索引信息和/或第二索引信息被修改,那么在解密过程中进行交叉验证时,在对第二运算结果和随机数据进行运算得到的第一原始数据,以及在对第二备份数据按照预设解密算法进行解密得到的第二原始数据在大部分情况下会不一致,因而在解密过程中确定原始数据被篡改,进而返回一个无效值,这样原始数据在运行过程中的逻辑不通,无法正常运行,从而避免了数据运行的不正确和不公平的问题产生。
作为一种可选的实施方式,步骤S206,将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中包括:按照预设字节拆分第一运算结果,得到多个第一子运算结果;将每个字节对应的第一子运算结果分散存储在第一预设数组中。
图5是根据本发明实施例的一种将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中的方法的流程图。如图5所示,该数据处理方法还包括:
步骤S501,按照预设字节拆分第一运算结果,得到多个第一子运算结果。
在本申请上述步骤S501提供的技术方案中,按照预设字节拆分第一运算结果,得到多个第一子运算结果,其中,每个第一子运算结果与预设字节的每个字节相对应。
步骤S502,将每个字节对应的第一子运算结果分散存储在第一预设数组中。
在本申请上述步骤S502提供的技术方案中,将每个字节对应的第一子运算结果分散存储在第一预设数组中。
在向第一预设数组分散存储第一运算结果的多个第一子运算结果时,对第一运算结果进行拆分,可以按照预设字节拆分第一运算结果,比如,按照四个字节拆分第一运算结果,得到多个第一子运算结果,每个第一子运算结果与预设字节的每个字节相对应。在按照预设字节拆分第一运算结果,得到多个第一子运算结果之后,向第一预设数组分散存储每个字节对应的第一子运算结果,实现了将一个完整的原始类型数据拆分为四个字节,进而将其随机存储到不同地方,可以分散存储于字节数组连续的内存中。
该实施例按照预设字节拆分第一运算结果,得到多个第一子运算结果,每个第一子运算结果与预设字节的每个字节相对应;将每个字节对应的第一子运算结果分散存储在第一预设数组中,从而实现了将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中的目的,进而将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,由于通过存储数据的多条索引信息,隐藏原始数据的变化趋势,数据结构的各数据元素在原始数据发生变化时,索引信息并不会发生变化,不容易通过原始数据,以及原始数据的变化趋势来定位到内存地址,达到提高数据安全性的技术效果。
作为一种可选的实施方式,在步骤S208,将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,该数据处理方法还包括:重载原始数据的数据类型的操作符。
在将多条第一索引信息对应的多个第一子运算结果确定为原始数据的第一加密数据之后,重载原始数据的数据类型的操作符,比如,重载+,-,*,/,+=,-=,*=,/=,数据转换等操作符。通过重载原始数据的数据类型的操作符,可以使得该实施例的加密结构在使用时和原始类型的用法一致。
在该实施例的数据处理过程中,加密结构存储的是索引信息,因此实施例的该数据结构的各数据元素在周边的原始数据发生变化时,索引信息并不会发生变化,因此不容易通过周边的原始数据,以及原始数据的变化趋势来定位到本加密结构的内存地址。
另外,即使通过间接的方式定位到本加密结构的内存地址,比如,通过定位本加密结构周边的数据内存地址,再偏移一定的位置得到本加密结构的内存地址,也只能修改到索引信息,因此不容易将原始数据修改为某一个确定的值。
如果索引信息被修改,那么在解密过程中进行交叉验证时,在对第二运算结果和随机数据进行运算得到的第一原始数据,以及在对第二备份数据按照预设解密算法进行解密得到的第二原始数据,在大部分情况下会不一致,因此在解密时能发现数据被篡改从而可以返回一个无效值,从而确保数据处理的安全性和可靠性。
实施例2
下面结合优选的实施例对本发明的技术方案进行说明。
该实施例主要用于开发人员在软件开发过程中使用,可以用于防止数据被搜索篡改,而在产品侧无感知。
在该实施例中使用的加密结构,隐藏了数据的变化趋势,也即,不容易直接确定数据的变化趋势,不容易根据原始数据的变化趋势来定位到本加密结构的内存地址,即使通过间接搜索的方式定位到该结构的内存地址,也不容易将数据修改为一个预期的值。其中,间接搜索是指先搜索到该加密结构周边的未加密数据的内存地址,然后通过一定的地址偏移,定位到本加密结构的内存地址。在读取数据时,能够校验数据是否被篡改过,从而解决了数据容易被篡改的问题。
下面对该实施例的加密结构的数据结构进行介绍。
随机值(randValue),用于异或时使用。
分散存储索引数组(index[4]),将原始数据拆分为四个字节的数据,四个字节的数据被分散存储在四个不同字节数组的内存地址中,该结构包含该四个地址的索引信息。
校验索引值(checkIndex),用于索引到备份的异或加密结构中的备份数据,在读取数据时,用于交叉校验解密结构是否被修改。
字节数组(globalBytes),用于存放被拆散后的真实字节数据,比如,数据A被拆分为4个字节,分散存储于字节数字中。
异或加密结构数组(checkData),用于存贮交叉验证的异或加密结构,用于备份原始数据。
下面对数据处理的加密过程进行介绍。
在对数据进行加密时,首先生成随机值,该随机值可以由系统随机生成,储存于随机值randValue中。
在生成随机值之后,使用异或加密结构来备份原始数据,得到备份数据,该备份原始数据用于在对数据进行解密过程中的交叉验证。该备份数据存储在异或加密结构数组checkData数组中,其中,异或加密结构数组用于存储数据的备份数据,校验索引值checkIndex用于存储该备份数据在加密结构数组checkData中的索引信息。
将原始数据与随机值randValue进行异或运算,得到运算结果A。可选地,该实施例在对原始数据和随机数据进行运算时,还可以通过加或者减偏移一定数值进行实现,从而得到运算结果A。
将运算结果A拆分为四个字节,将四个字节的数据分散存储于字节数组连续的内存中。该四个字节的数据在字节数组中具有索引信息,将该四个字节的数据在字节数组中的索引信息存储于索引数组index数组中,从而实现了对原始数据的加密。
下面对数据的解密过程进行介绍。
在对数据进行解密时,通过index索引数组从字节数组globalBytes中读取四个字节数据,组合为一个数据A。
数据A与随机值randValue进行异或运算,得到原始数据B1。
通检验索引值checkIndex索引从加密结构数组checkData中取出备份数据,对备份数据进行解密,得到原始数据B2。
将原始数据B1和原始数据B2进行对比,在原始数据B1和原始数据B2一致的情况下,确定原始数据未被篡改,返回正常的原始数据;在原始数据B1和原始数据B2不一致的情况下,确定原始数据篡改,此时返回一个固定的数据,比如,返回一个固定的无效值0,该无效值致使数据处理的逻辑不通,从而实现了对数据拒绝修改的目的。
该实施例的加密结构为自定义的加密结构,可以通过重载原始数据类型的操作符,比如,重载+,-,*,/,+=,-=,*=,/=,数据转换等操作符,可以使得该加密结构在使用时和原始数据类型的用法一致。
该实施例的加密数据结构存储的是索引信息,比如,异或加密结构数组checkData中的索引值checkIndex,拆分得到的字节在字节数组(globalBytes)中的索引index数组。因此该加密数据结构中的各数据在周边的原始数据发生变化时,索引信息并不会发生变化,因此不容易通过周边的原始数据,以及原始数据的变化趋势来定位到本加密结构的内存地址。
即使通过间接搜索的方式定位到本加密结构的内存地址,比如,通过定位本结构周边的数据的内存地址,再将定位到的内存地址偏移一定的位置,定位到本加密结构的内存地址,也只能修改索引信息,不容易修改其实际数据,因此不容易将原始数据修改为某一个确定的值,避免了数据的篡改,提高了数据的安全性。
可选地,如果该实施例的索引信息被修改,则在解密过程中,在进行交叉验证时,数据A与随机值randValue异或得到原始数据B1,通过校验索引值checkIndex索引从异或加密结构数组checkData中取出备份的异或解密结构,解密得到原始数据B2,在大部分情况下不会一致,因此在解密过程中时够能发现数据已经被篡改,从而返回一个无效值,使得数据处理的逻辑不通,避免对篡改的数据的处理。
可选地,该实施例为了减少本结构的内存大小,分散存储索引数组index使用的是2个字节的ushort类型,因此本全局字节数组gloablBytes大小的最大限制为64K,则在游戏应用中能够同时使用该加密结构的最大数量为16K。
该实施例的加密结构使用的内存大小为16个字节,是原始数据类型4个字节的4倍。同时在使用该加密结构进行运算时,有加密解密以及交叉验证的过程。
从运行效率、内存使用和最大可以使用数量的角度来看,该实施例的加密结构适合对一些重要的、可能被篡改的数据进行存储。
举例而言,从“天天酷跑”项目来看,在使用了该实施例的加密结构的逻辑数据之后,在外网尚未有游戏玩家能够成功篡改数据,相反由于本加密结构数量的限制,在外网使用了异或加密结构的逻辑数据网,已经有多起被篡改该的案例。
该实施例的加密结构存储的是索引信息,隐藏原始的数据,原始数据的变化趋势,即使篡改本加密结构也不容易修改到某一确定值,并且能自身检测本加密结构是否被外部篡改;对于一些重要的游戏逻辑数据,比如,对于生命值、技能持续时间、攻击力等,可以使用该实施例的加密结构有效地防止其被非法搜索和篡改,并通过自身的校检逻辑来感知到并拒绝这种修改,从而保护游戏逻辑的正确性和公平性;该实施例的加密结构还可以重载原始数据类型的操作符,比如,使得数据的处理与原始数据类型用法一致;该实施例的加密结构联合使用异或加密,以及分散存储加密两种加密方式,并进行交叉验证,当确定本加密结构中的数据被篡改时,可以在读取过程中检测并返回一个确定的无效值,提高了数据处理的安全性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述数据处理方法的数据处理装置。图6是根据本发明实施例的一种数据处理装置的示意图。如图6所示,该装置可以包括:获取单元10、第一运算单元20、第一存储单元30和第二存储单元40。
获取单元10,用于获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据。
获取单元10获取到的原始数据为待进行加密的数据,可以为原始数值,优选地,该实施例的原始数据类型为int类型和float类型。获取单元10获取到的随机数据可以由系统随机产生,可以为随机值,该随机数据用于和原始数据进行运算。
可选地,获取单元10获取到的原始数据为游戏应用中的数据,比如,为重要的游戏逻辑数据,该游戏逻辑值可以为游戏应用中使用到的生命值、技能持续时间、攻击力等,以为用户带来不同的体验,此处不做限制。
获取单元10获取到的原始数据在存储时具有一定的变化趋势,比如,数据变大的趋势,数据变小的趋势。
第一运算单元20,用于对原始数据和随机数据进行运算,得到第一运算结果。
在获取单元10获取原始数据和随机数据之后,第一运算单元20对原始数据和随机数据进行运算,该运算可以为异或运算,也即,原始数据和随机数据用“1”或“0”表示,将原始数据与随机数据进行异或运算,得到第一运算结果。
需要说明的是,该实施例的第一运算单元20对原始数据和随机数据进行异或运算,仅为本发明实施例的优选实施方式,并不代表本发明实施例的第一运算单元20对原始数据和随机数据进行的运算仅为异或运算,其它可以实现原始数据和随机数据在加密过程中的运算的方法都在本发明实施例的范围之内,此处不再一一举例说明。
第一存储单元30,用于将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中。
在第一运算单元20对原始数据和随机数据进行运算,得到第一运算结果之后,第一存储单元30将第一运算结果拆分为多个第一子运算结果,比如,第一存储单元30将第一运算结果拆分为多个字节数据,该多个字节数据组成第一运算结果。第一存储单元30向第一预设数组分散存储第一运算结果包括的多个第一子运算结果,可以向第一预设数组随机存储该第一运算结果的多个第一子运算结果,这样第一运算结果的存储并无规律可循,降低了数据被间接搜索,通过一定的偏移定位到该实施例的加密结构,以对数据进行篡改的可能性。
第二存储单元40,用于将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。
该实施例的第二预设数组用于分散存储多个第一子运算结果在第一预设数组中的多条第一索引信息,多条第一索引信息对应系统不同的内存地址。多个第一子运算结果与多条第一索引信息相对应。
可选地,第二预设数组为分散存储索引数组(index[]),第二存储单元40用于将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在分散存储索引数组中,分散存储索引数组包括不同内存地址的索引信息,比如,将第一运算结果拆分为的四个字节数据在字节数组中的索引信息,存储在上述分散存储索引数组中。
优选地,该实施例的第二存储单元40将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在的第二预设数组使用数据类型为2个字节的ushort类型,从而减少该实施例的加密结构的内存,因此第一预设数组的大小的最大限制可以为64K,在能同时使用该实施例的加密结构的最大数量可以为16K。加密结构的内存大小可以为16字节,是原始数据类型4个字节的4倍。
在第一存储单元30向第一预设数组分散存储第一运算结果的多个第一子运算结果之后,第二存储单元40将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,从而实现了对原始数据的加密,实现了自定义加密结构,该自定义加密结构还重载了一些原始数据类型的操作符,代替了原始数据的数据类型来使用,隐藏了原始数据。
由于该实施例的加密结构存储的是多条第一索引信息,该数据结构的各数据元素在周边的原始数据发生变化时,多条第一索引信息并不会发生变化,因此不容易通过周边的原始数据,以及原始数据的变化趋势来定位到本加密结构的内存地址。即使通过间接的方式定位到本加密结构的内存地址,也只能修改到第一索引信息,而不容易修改第一索引信息对应的原始数据,因此不容易将原始数据修改为某一个确定的值。
需要说明的是,该实施例中的获取单元10可以用于执行本申请实施例1中的步骤S202,该实施例中的第一运算单元20可以用于执行本申请实施例1中的步骤S204,该实施例中的第一存储单元30,可以用于执行本申请实施例1中的步骤S206,该实施例中的第二存储单元40可以用于执行本申请实施例1中的步骤S208。
可选地,该装置还包括:加密单元、第一确定单元和第三存储单元。其中,加密单元,用于在获取原始数据和随机数据之后,按照预设加密算法对原始数据进行加密,得到第一加密数据;第一确定单元,用于确定第一加密数据为原始数据的第一备份数据;第三存储单元,将第一备份数据存储在第三预设数组中,其中,第三预设数组用于存储多份备份数据,第一备份数据在第三预设数组中由第二索引信息进行索引,第三预设数组中存储的第一备份数据用于验证原始数据是否被篡改。
需要说明的是,该实施例中的加密单元可以用于执行本申请实施例1中的步骤S301,该实施例中的第一确定单元可以用于执行本申请实施例1中的步骤S302,该实施例中的第三存储单元可以用于执行本申请实施例1中的步骤S303。
可选地,该装置还包括:读取单元、组合单元、第二运算单元、索引单元、解密单元、第一返回单元和第二确定单元。其中,读取单元,用于在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果;组合单元,用于组合多个第二子运算结果,得到第二运算结果;第二运算单元,用于对第二运算结果和随机数据进行运算,得到第一原始数据;索引单元,用于通过第二索引信息在第三预设数组中进行索引,得到第二备份数据;解密单元,用于对第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,预设解密算法与预设加密算法相对应;第一返回单元,用于在第一原始数据和第二原始数据相同的情况下,返回原始数据;第二确定单元,用于在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改。
需要说明的是,该实施例中的读取单元可以用于执行本申请实施例1中的步骤S401,该实施例中的组合单元可以用于执行本申请实施例1中的步骤S402,该实施例中的第二运算单元可以用于执行本申请实施例1中的步骤S403,该实施例中的索引单元可以用于执行本申请实施例1中的步骤S404,该实施例中的解密单元可以用于执行本申请实施例1中的步骤S405,该实施例中的第一返回单元可以用于执行本申请实施例1中的步骤S406,该实施例中的第二确定单元可以用于执行本申请实施例1中的步骤S407。
可选地,该装置还包括:第二返回单元,用于在确定原始数据被篡改时,返回用于指示原始数据被篡改过的预设值,其中,预设值还用于使原始数据在运行过程中出现异常。
可选地,第二确定单元包括:确定模块,用于在第一索引信息和/或第二索引信息被修改的情况下,确定第一原始数据和第二原始数据不相同,并确定原始数据被篡改。
可选地,第一存储单元包括:拆分模块和存储模块。其中,拆分模块,用于按照预设字节拆分第一运算结果,得到多个第一子运算结果,其中,每个第一子运算结果与预设字节的每个字节相对应;存储模块,用于将每个字节对应的第一子运算结果分散存储在第一预设数组中。
需要说明的是,该实施例中的拆分模块可以用于执行本申请实施例1中的步骤S501,该实施例中的存储模块可以用于执行本申请实施例1中的步骤S502。
可选地,该装置还包括:重载单元,用于在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,重载原始数据的数据类型的操作符。
该实施例通过获取单元10获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据,通过第一运算单元20对原始数据和随机数据进行运算,得到第一运算结果,通过第一存储单元30将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中,通过第二存储单元40将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。由于通过存储数据的多条索引信息,隐藏原始数据的变化趋势,数据结构的各数据元素在原始数据发生变化时,索引信息并不会发生变化,不容易通过原始数据,以及原始数据的变化趋势来定位到内存地址,达到提高数据安全性的技术效果,进而解决了相关技术数据容易被篡改的技术问题。
此处需要说明的是,上述单元和模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述单元和模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。其中,硬件环境包括网络环境。
实施例4
根据本发明实施例,还提供了一种用于实施上述数据处理方法的电子装置。
图7是根据本发明实施例的一种的电子装置的结构框图。如图7所示,该的电子装置可以包括:一个或多个(图中仅示出一个)处理器701、存储器703。可选地,如图7所示,该电子装置还可以包括传输装置705、输入输出设备707。
其中,存储器703可用于存储软件程序以及模块,如本发明实施例中的数据处理方法和装置对应的程序指令/模块,处理器701通过运行存储在存储器703内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据处理方法。存储器703可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器703可进一步包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置705用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置705包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置705为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器703用于存储应用程序。
处理器701可以通过传输装置705调用存储器703存储的应用程序,以执行下述步骤:
获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;
对原始数据和随机数据进行运算,得到第一运算结果;
将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;
将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。
处理器701还用于执行下述步骤:在获取原始数据和随机数据之后,按照预设加密算法对原始数据进行加密,得到第一加密数据;确定第一加密数据为原始数据的第一备份数据;将第一备份数据存储在第三预设数组中,其中,第三预设数组用于存储多份备份数据,第一备份数据在第三预设数组中由第二索引信息进行索引,第三预设数组中存储的第一备份数据用于验证原始数据是否被篡改。
处理器701还用于执行下述步骤:在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果;组合多个第二子运算结果,得到第二运算结果;对第二运算结果和随机数据进行运算,得到第一原始数据;通过第二索引信息在第三预设数组中进行索引,得到第二备份数据;对第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,预设解密算法与预设加密算法相对应;在第一原始数据和第二原始数据相同的情况下,返回原始数据;在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改。
处理器701还用于执行下述步骤:在确定原始数据被篡改时,返回用于指示原始数据被篡改过的预设值,其中,预设值还用于使原始数据在运行过程中出现异常。
处理器701还用于执行下述步骤:在第一索引信息和/或第二索引信息被修改的情况下,确定第一原始数据和第二原始数据不相同,并确定原始数据被篡改。
处理器701还用于执行下述步骤:按照预设字节拆分第一运算结果,得到多个第一子运算结果,其中,每个第一子运算结果与预设字节的每个字节相对应;将每个字节对应的第一子运算结果分散存储在第一预设数组中。
处理器701还用于执行下述步骤:在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,重载原始数据的数据类型的操作符。
采用本发明实施例,提供了一种数据处理方案。获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;对原始数据和随机数据进行运算,得到第一运算结果;将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。由于通过存储数据的多条索引信息,隐藏原始数据的变化趋势,数据结构的各数据元素在原始数据发生变化时,索引信息并不会发生变化,不容易通过原始数据,以及原始数据的变化趋势来定位到内存地址,达到提高数据安全性的技术效果,进而解决了相关技术数据容易被篡改的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图7所示的结构仅为示意,电子装置可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等电子装置设备。图7其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取原始数据和随机数据,其中,原始数据为待加密的数据,随机数据为随机生成的数据;
对原始数据和随机数据进行运算,得到第一运算结果;
将第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;
将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,多条第一索引信息对应不同的内存地址,每个第一子运算结果在第一预设数组中通过一条第一索引信息进行索引。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在获取原始数据和随机数据之后,按照预设加密算法对原始数据进行加密,得到第一加密数据;确定第一加密数据为原始数据的第一备份数据;将第一备份数据存储在第三预设数组中,其中,第三预设数组用于存储多份备份数据,第一备份数据在第三预设数组中由第二索引信息进行索引,第三预设数组中存储的第一备份数据用于验证原始数据是否被篡改。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,通过多条第一索引信息从第二预设数组中读取多个第二子运算结果;组合多个第二子运算结果,得到第二运算结果;对第二运算结果和随机数据进行运算,得到第一原始数据;通过第二索引信息在第三预设数组中进行索引,得到第二备份数据;对第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,预设解密算法与预设加密算法相对应;在第一原始数据和第二原始数据相同的情况下,返回原始数据;在第一原始数据和第二原始数据不相同的情况下,确定原始数据被篡改。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在确定原始数据被篡改时,返回用于指示原始数据被篡改过的预设值,其中,预设值还用于使原始数据在运行过程中出现异常。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在第一索引信息和/或第二索引信息被修改的情况下,确定第一原始数据和第二原始数据不相同,并确定原始数据被篡改。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:按照预设字节拆分第一运算结果,得到多个第一子运算结果,其中,每个第一子运算结果与预设字节的每个字节相对应;将每个字节对应的第一子运算结果分散存储在第一预设数组中。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在将多个第一子运算结果在第一预设数组中的多条第一索引信息存储在第二预设数组中之后,重载原始数据的数据类型的操作符。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种数据处理方法,其特征在于,包括:
获取原始数据和随机数据,其中,所述原始数据为待加密的数据,所述随机数据为随机生成的数据;
对所述原始数据和所述随机数据进行运算,得到第一运算结果;
将所述第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;
将所述多个第一子运算结果在所述第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,所述多条第一索引信息对应不同的内存地址,每个所述第一子运算结果在所述第一预设数组中通过一条所述第一索引信息进行索引。
2.根据权利要求1所述的方法,其特征在于,在获取所述原始数据和所述随机数据之后,所述方法还包括:
按照预设加密算法对所述原始数据进行加密,得到第一加密数据;
确定所述第一加密数据为所述原始数据的第一备份数据;
将所述第一备份数据存储在第三预设数组中,其中,所述第三预设数组用于存储多份备份数据,所述第一备份数据在所述第三预设数组中由第二索引信息进行索引,所述第三预设数组中存储的所述第一备份数据用于验证所述原始数据是否被篡改。
3.根据权利要求2所述的方法,其特征在于,在将所述多个第一子运算结果在所述第一预设数组中的多条第一索引信息存储在所述第二预设数组中之后,所述方法还包括:
通过所述多条第一索引信息从所述第二预设数组中读取多个第二子运算结果;
组合所述多个第二子运算结果,得到第二运算结果;
对所述第二运算结果和所述随机数据进行运算,得到第一原始数据;
通过所述第二索引信息在所述第三预设数组中进行索引,得到第二备份数据;
对所述第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,所述预设解密算法与所述预设加密算法相对应;
在所述第一原始数据和所述第二原始数据相同的情况下,返回所述原始数据;
在所述第一原始数据和所述第二原始数据不相同的情况下,确定所述原始数据被篡改。
4.根据权利要求3所述的方法,其特征在于,在确定所述原始数据被篡改时,所述方法还包括:
返回用于指示所述原始数据被篡改过的预设值,其中,所述预设值还用于使所述原始数据在运行过程中出现异常。
5.根据权利要求3所述的方法,其特征在于,在所述第一原始数据和所述第二原始数据不相同的情况下,确定所述原始数据被篡改包括:
在所述第一索引信息和/或所述第二索引信息被修改的情况下,确定所述第一原始数据和所述第二原始数据不相同,并确定所述原始数据被篡改。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,将所述第一运算结果包括的多个第一子运算结果分散存储在所述第一预设数组中包括:
按照预设字节拆分所述第一运算结果,得到所述多个第一子运算结果,其中,每个所述第一子运算结果与所述预设字节的每个字节相对应;
将所述每个字节对应的第一子运算结果分散存储在所述第一预设数组中。
7.根据权利要求1至5中任意一项所述的方法,其特征在于,在将所述多个第一子运算结果在所述第一预设数组中的多条第一索引信息存储在所述第二预设数组中之后,所述方法还包括:重载所述原始数据的数据类型的操作符。
8.一种数据处理装置,其特征在于,包括:
获取单元,用于获取原始数据和随机数据,其中,所述原始数据为待加密的数据,所述随机数据为随机生成的数据;
第一运算单元,用于对所述原始数据和所述随机数据进行运算,得到第一运算结果;
第一存储单元,用于将所述第一运算结果包括的多个第一子运算结果分散存储在第一预设数组中;
第二存储单元,用于将所述多个第一子运算结果在所述第一预设数组中的多条第一索引信息存储在第二预设数组中,其中,所述多条第一索引信息对应不同的内存地址,每个所述第一子运算结果在所述第一预设数组中通过一条所述第一索引信息进行索引。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
加密单元,用于在获取所述原始数据和所述随机数据之后,按照预设加密算法对所述原始数据进行加密,得到第一加密数据;
第一确定单元,用于确定所述第一加密数据为所述原始数据的第一备份数据;
第三存储单元,将所述第一备份数据存储在第三预设数组中,其中,所述第三预设数组用于存储多份备份数据,所述第一备份数据在所述第三预设数组中由第二索引信息进行索引,所述第三预设数组中存储的所述第一备份数据用于验证所述原始数据是否被篡改。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
读取单元,用于在将所述多个第一子运算结果在所述第一预设数组中的多条第一索引信息存储在所述第二预设数组中之后,通过所述多条第一索引信息从所述第二预设数组中读取多个第二子运算结果;
组合单元,用于组合所述多个第二子运算结果,得到第二运算结果;
第二运算单元,用于对所述第二运算结果和所述随机数据进行所述运算,得到第一原始数据;
索引单元,用于通过所述第二索引信息在所述第三预设数组中进行索引,得到第二备份数据;
解密单元,用于对所述第二备份数据按照预设解密算法进行解密,得到第二原始数据,其中,所述预设解密算法与所述预设加密算法相对应;
第一返回单元,用于在所述第一原始数据和所述第二原始数据相同的情况下,返回所述原始数据;
第二确定单元,用于在所述第一原始数据和所述第二原始数据不相同的情况下,确定所述原始数据被篡改。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二返回单元,用于在确定所述原始数据被篡改时,返回用于指示所述原始数据被篡改过的预设值,其中,所述预设值还用于使所述原始数据在运行过程中出现异常。
12.根据权利要求10所述的装置,其特征在于,所述第二确定单元包括:
确定模块,用于在所述第一索引信息和/或所述第二索引信息被修改的情况下,确定所述第一原始数据和所述第二原始数据不相同,并确定所述原始数据被篡改。
13.根据权利要求8至12中任意一项所述的装置,其特征在于,所述第一存储单元包括:
拆分模块,用于按照预设字节拆分所述第一运算结果,得到所述多个第一子运算结果,其中,每个所述第一子运算结果与所述预设字节的每个字节相对应;
存储模块,用于将所述每个字节对应的第一子运算结果分散存储在所述第一预设数组中。
14.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至7任一项中所述的数据处理方法。
15.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行所述权利要求1至7任一项中所述的数据处理方法。
CN201710644684.2A 2017-07-31 2017-07-31 数据处理方法和装置 Pending CN107423630A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710644684.2A CN107423630A (zh) 2017-07-31 2017-07-31 数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710644684.2A CN107423630A (zh) 2017-07-31 2017-07-31 数据处理方法和装置

Publications (1)

Publication Number Publication Date
CN107423630A true CN107423630A (zh) 2017-12-01

Family

ID=60431747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710644684.2A Pending CN107423630A (zh) 2017-07-31 2017-07-31 数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN107423630A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108830096A (zh) * 2018-06-21 2018-11-16 广州华多网络科技有限公司 数据处理方法、装置、电子设备及存储介质
WO2020140626A1 (zh) * 2019-01-04 2020-07-09 平安科技(深圳)有限公司 基于盐值的数据持有性验证方法及终端设备
CN112202553A (zh) * 2020-09-27 2021-01-08 北京奇艺世纪科技有限公司 数据传输方法、系统、电子设备和存储介质
CN112434322A (zh) * 2020-12-03 2021-03-02 深圳市欢太科技有限公司 数据加密方法、装置、计算机设备及计算机可读存储介质
CN113987589A (zh) * 2021-12-27 2022-01-28 飞天诚信科技股份有限公司 一种处理数据的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231622A (zh) * 2007-12-27 2008-07-30 深圳华为通信技术有限公司 基于闪存的数据存储方法和设备、及数据读取方法和设备
CN104166821A (zh) * 2013-05-17 2014-11-26 华为技术有限公司 一种数据处理的方法和装置
CN106598882A (zh) * 2016-12-09 2017-04-26 武汉斗鱼网络科技有限公司 一种安全的内存数据保护方法及装置
CN106611128A (zh) * 2016-07-19 2017-05-03 四川用联信息技术有限公司 云存储中基于二次加密的数据验证和数据恢复算法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231622A (zh) * 2007-12-27 2008-07-30 深圳华为通信技术有限公司 基于闪存的数据存储方法和设备、及数据读取方法和设备
CN104166821A (zh) * 2013-05-17 2014-11-26 华为技术有限公司 一种数据处理的方法和装置
CN106611128A (zh) * 2016-07-19 2017-05-03 四川用联信息技术有限公司 云存储中基于二次加密的数据验证和数据恢复算法
CN106598882A (zh) * 2016-12-09 2017-04-26 武汉斗鱼网络科技有限公司 一种安全的内存数据保护方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108830096A (zh) * 2018-06-21 2018-11-16 广州华多网络科技有限公司 数据处理方法、装置、电子设备及存储介质
WO2020140626A1 (zh) * 2019-01-04 2020-07-09 平安科技(深圳)有限公司 基于盐值的数据持有性验证方法及终端设备
CN112202553A (zh) * 2020-09-27 2021-01-08 北京奇艺世纪科技有限公司 数据传输方法、系统、电子设备和存储介质
CN112434322A (zh) * 2020-12-03 2021-03-02 深圳市欢太科技有限公司 数据加密方法、装置、计算机设备及计算机可读存储介质
CN113987589A (zh) * 2021-12-27 2022-01-28 飞天诚信科技股份有限公司 一种处理数据的方法及装置
CN113987589B (zh) * 2021-12-27 2022-03-18 飞天诚信科技股份有限公司 一种处理数据的方法、装置、计算机可读存储介质及装置

Similar Documents

Publication Publication Date Title
CN107423630A (zh) 数据处理方法和装置
CN105408912B (zh) 处理认证和资源许可
CN105450620B (zh) 一种信息处理方法及装置
CN103988467B (zh) 确保软件加密技术安全的加密系统和方法
US20030191942A1 (en) Integrity ordainment and ascertainment of computer-executable instructions
CN107743133A (zh) 移动终端及其基于可信安全环境的访问控制方法和系统
CN107924448A (zh) 硬件实施的单向密码术
CN105144189A (zh) 安全云数据库平台
CN109672693B (zh) 基于区块链的彩票兑奖方法及装置
CN105574424B (zh) 一种大数据加解密处理方法及系统
CN109462477B (zh) 基于物联网嵌入式设备的白盒加密方法
CN106228076B (zh) 一种基于sgx的图片验证码保护方法及系统
CN112100679B (zh) 基于隐私保护的数据处理方法、装置和服务器
CN108234115A (zh) 信息安全的验证方法、装置和系统
CN105320891B (zh) 一种计算机安全加载系统镜像的方法及装置
CN104156672B (zh) 基于linux的数据加密保护方法及系统
CN107679149A (zh) 一种数据处理方法及服务器
CN108134673A (zh) 一种生成白盒库文件的方法及装置
CN110210591A (zh) 一种智能ic卡个人化数据的写入方法、计算机装置及计算机可读存储介质
CN106550359A (zh) 一种终端和sim卡的认证方法和系统
CN108416224A (zh) 一种数据加解密方法及装置
CN107220528A (zh) Java程序的保护与运行方法、装置和终端
CN108229210A (zh) 一种保护数据的方法、终端及计算机可读存储介质
CN110069241A (zh) 伪随机数的获取方法、装置、客户端设备和服务器
CN106789051A (zh) 一种保护文件的方法、装置和计算设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171201