一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种可灰度校验的数据保密方法、装置及存储介质与流程

2022-02-25 20:10:07 来源:中国专利 TAG:


1.本发明涉及数据库技术领域,尤其涉及一种可灰度校验的数据保密方法、装置及存储介质。


背景技术:

2.在现有加密方案中,aes(advanced encryption standard,高级加密标准)算法可以保证数据的安全性,但是如果遇到攻击者的恶意攻击,不以解密获取数据为目的,只是对先存数据进行篡改,aes算法无法发现,只能对于无法解密的数据报错。或者攻击者将不同的数据进行对调,aes算法也无法发现。即其中所生成的密文无法校验正确性,在存储过程中,可能遭到恶意篡改、替换。对于当前正在使用的数据库,无法判断一个数据是密文还是未经处理的明文。
3.sha-256是属于安全散列算法2(sha-2)的一种密码学hash算法。对于任意长度的明文数据,他都会生成一个256位的hash码,称为消息摘要。这个hash码被认为是不可逆的,也就是无法用hash码得到原始数据。但是sha-256算法和密钥无关,存在可能恶意行为,将保存的数据和对应的hash码同时进行修改。从而逃过反篡改的校验。
4.在目前的很多商用后台系统中,对于存储在数据库的数据没有进行加密。或者也曾使用上述两种现有的加密方案一次性对所有已经存在的数据进行加密,然后才能对新增或者修改的数据继续进行加密。在整个数据保存过程中,无法测试加密流程的正确性以及无法判断哪些数据已经完成了加密,一旦加密的具体过程中存在技术缺陷或者对已经加密的数据进行反复加密,可能导致全部数据不可用。
5.而上述两种加密算法所存在的缺陷,也会对目前的商用后台系统造成很大的安全隐患。


技术实现要素:

6.本发明的实施例提供一种可灰度校验的数据保密方法、装置及存储介质,能够有效过滤已经完成了加密的数据,并缓减对已经加密的数据进行反复加密的问题。
7.为达到上述目的,本发明的实施例采用如下技术方案:
8.第一方面,本发明的实施例提供的方法,包括:
9.检测待处理的数据是否带有初始识别符,若未带有则获取数据库主键id;检测所述数据库主键id是否存在于灰度名单中;若所述数据库主键id存在于所述灰度名单中,则对所述待处理的数据按预设的数据格式进行加密后写入数据库;从所述数据库中读取数据,对所述读取数据进行解密得到解密后的数据明文。在所述待处理的数据中,若在字符串的前端若不存在所述初始识别符,则获取所述待处理的数据中的字符串为明文。
10.其中,所述预设数据格式包括加密标识符、密文和hash码。在所述待处理数据的明文前端,添加加密识别符,所述加密识别符中记录有当前使用的密钥序号。
11.对所述待处理的数据按预设的数据格式进行加密包括:获取所述待处理数据的明
文,基于所述待处理的数据的明文和数据库主键id,生成hash码。
12.对所述待处理的数据按预设的数据格式进行加密包括:获取所述待处理数据的明文,通过对称加密算法对所述待处理数据的明文进行加密得到密文,并将加密得到的密文作为预设数据格式中的密文。
13.从所述数据库中读取数据,对所述读取数据进行解密得到解密后的数据明文具体为:
14.从所述数据库中读取数据,检测所读取的数据是否带有加密识别符;
15.若有,则通过加密识别符获取当前使用的密钥序号,再基于所述密钥序号获取与所述密钥序号相对应的密钥,利用所获取的密钥对所读取的数据进行解密,得到数据的明文。
16.进一步的,从所述明文中提取数据库主键id,并检测所提取的数据库主键id与数据库中当前的数据的数据库主键id是否一致;若不一致,则报错,认为数据发生篡改;若一致,则利用所述明文部分计算hash值,并检测所计算的hash值与数据格式中的enhash部分是否一致,若一致则去除明文部分中的数据id得到数据明文。
17.第二方面,本发明的实施例提供的装置,包括:
18.加密预处理模块,用于检测待处理的数据是否带有初始识别符,若未带有则获取数据库主键id;
19.加密模块,用于检测所述数据库主键id是否存在于灰度名单中;若所述数据库主键id存在于所述灰度名单中,则对待处理的数据进行加密后写入数据库。
20.解密预处理模块,用于从数据库中读取数据,检测所读取的数据是否带有加密识别符;若否,则直接反馈所读取的数据;
21.解密模块,用于若所读取的数据带有加密识别符,则利用加密识别符获取密钥序号;获取所述密钥序号对应的密钥,利用所获取的密钥对所读取的数据进行解密,得到数据的明文部分,其中,在数据库对应的配置表中,记录至少一种密钥和密钥要与密钥序号的对应关系。
22.第三方面,本发明的实施例提供的存储介质,存储有计算机程序或指令,当所述计算机程序或指令被运行时,第一方面中所述的方法。
23.在目前的很多商用后台系统中,对于存储在数据库的数据没有进行加密,或者通过现有的加密方案一次性对所有已经存在的数据进行加密,然后才能对新增或者修改的数据继续进行加密,即现有方案在整个数据保存过程中,无法测试加密流程的正确性以及无法判断哪些数据已经完成了加密,这就导致其一旦加密的具体过程中存在技术缺陷或者对已经加密的数据进行反复加密,可能导致全部数据不可用。
24.针对现有技术中无法测试加密流程的正确性以及无法判断哪些数据已经完成了加密的问题,本实施例首先检测待处理的数据是否带有初始识别符,而“初始识别符”也可理解为在初次检测中就存在于数据中的加密识别符,通过在数据写入的加密前先检测整个字符是否带有加密识别符,来判断哪些数据已经完成了加密,从而至少可以缓减现有技术中的“如何判断哪些数据已经完成了加密”的问题;之后,则继续针对未带有初始识别符的数据,检测所述数据库主键id是否存在于灰度名单中,并将主键id存在于所述灰度名单中的数据进行加密,通过利用主键id是否存在于灰度名单中的判定过程,从而至少可以缓减
现有技术中的“已经加密的数据被进行反复加密”的问题。
附图说明
25.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
26.图1为本发明实施例提供的一种具体实例中的数据处理方式的流程示意图;
27.图2为本发明实施例提供的一种具体实例中的加密流程的示意图;
28.图3为本发明实施例提供的一种具体实例中的解密流程的示意图;
29.图4为本发明实施例提供的可灰度校验的数据保密方法的流程示意图。
具体实施方式
30.为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
31.本实施例中所提及的对称加密、非对称加密、hash函数等概念,大多属于本领域中的通常概念,比如:对称加密:也叫传统加密或者单密钥加密,加密方利用密钥和加密算法,将明文转换变密文;而解密方,使用相同的密钥和解密算法,将密文变换成明文。常见的对称加密算法包括数据加密标准(des,dataencryptionstandard)、高级加密标准(aes,advancedencryptionstandard)等。加密性能比较好,通常用于加密大量数据时使用。再比如:非对称加密:非对称加密需要两个密钥,公开密钥(简称公钥)和私有密钥(简称私钥)。公钥和私钥成对生成,使用公钥对数据进行加密,只有用对应的私钥才能解密。常见非对称加密算法有rsa、ecc(椭圆曲线加密算法)。加密解密的速度一般没有对称加密快。又比如:密码学hash函数:hash函数将变长的明文数据作为输入,产生固定长度的hash值。从hash值无法生成对应的明文数据。对于明文数据的任何改变,都将极大可能的改变其hash码。常见的hash函数有md5、sha-2。hash函数通常用于保证数据完整性。
32.本发明实施例提供一种可灰度校验的数据保密方法,如图4所示的,包括:
33.s1、检测待处理的数据是否带有初始识别符,若未带有则获取数据库主键id。对于采用本实施例的方式处理的、并且处理完毕后存储至数据库的数据,可以称之为“待处理的数据”,而待处理的数据的来源并不限定,比如:可以是由外部设备、用户终端上传的,准备写入数据库的数据;也可以是数据库中原本存储的、但未采用本实施例方式处理的数据。若是数据库中原本存储的数据,被提取出作为“待处理的数据”,则同样需要通过“加密识别符”来确认是否被加密,不存在加密识别符的数据,则说明其在数据库中就是以明文的状态存储的,需要被加密,并且在加密后覆盖至数据库中的原来的明文部分。
34.具体的,对于数据库中的海量数据,需要判断其是否已被加密,即需要判断每行字符串究竟是明文,还是已被加密成了密文。因此,所述检测待处理的数据是否带有初始识别符,包括:在所述待处理的数据中,若在字符串的前端若不存在所述初始识别符,则获取所述待处理的数据中的字符串为明文。
35.需要说明的是,本实施例中所述的“初始识别符”在方法流程中的作用即在于步骤s1中用于判定是否触发获取数据id的过程,而“初始识别符”本身的数据形式,则可以与加密识别符相同,因此“初始识别符”也可以理解为在初次检测中就存在于数据中的加密识别符。具体如图1所示的,在数据写入数据库前可以对其进行加密。可以先检测整个字符是否带有加密识别符,如果待处理的数据库的数据在写入前就带有加密识别符(此时可称为初始识别符),则认为系统出现了异常,或者用户输入的明文数据中出现了加密识别符,应该将待处理的数据交由其他业务逻辑进行处理。
36.s2、检测所述数据库主键id是否存在于灰度名单中。
37.其中,如图1所示的,可以首先判断系统是否开启了灰度加密功能,如果开启功能,检测所述数据库主键id是否存在于灰度名单中,当前数据对应的数据库主键id存在于灰度名单中,则执行整个的加密流程。否则就判定为不需要加密,直接写入数据库。数据库主键id,指的是在数据库中,用于唯一标识每一行数据的标识符,起到唯一标识各行数据的功能,其表现形式并不限定。
38.s3、若所述数据库主键id存在于所述灰度名单中,则对待处理的数据进行加密后写入数据库。
39.其中,所述预设数据格式包括加密标识符、密文和hash码。在所述待处理数据的明文前端,添加加密识别符,所述加密识别符中记录有当前使用的密钥序号。对所述待处理的数据按预设的数据格式进行加密包括:获取所述待处理数据的明文,基于所述待处理的数据的明文和数据库主键id,生成hash码。并通过对称加密算法对所述待处理数据的明文进行加密得到密文,并将加密得到的密文作为预设数据格式中的密文。
40.s4、从所述数据库中读取数据,对所述读取数据进行解密得到解密后的数据明文。
41.其中,从所述数据库中读取数据,检测所读取的数据是否带有加密识别符;若有,则通过加密识别符获取当前使用的密钥序号,再基于所述密钥序号获取与所述密钥序号相对应的密钥,利用所获取的密钥对所读取的数据进行解密,得到数据的明文。
42.在目前的很多商用后台系统中,对于存储在数据库的数据没有进行加密,或者通过现有的加密方案一次性对所有已经存在的数据进行加密,然后才能对新增或者修改的数据继续进行加密,即现有方案在整个数据保存过程中,无法测试加密流程的正确性以及无
法判断哪些数据已经完成了加密,这就导致其一旦加密的具体过程中存在技术缺陷或者对已经加密的数据进行反复加密,可能导致全部数据不可用。
43.针对现有技术中无法测试加密流程的正确性以及无法判断哪些数据已经完成了加密的问题,本实施例首先检测待处理的数据是否带有初始识别符,而“初始识别符”也可理解为在初次检测中就存在于数据中的加密识别符,通过在数据写入的加密前先检测整个字符是否带有加密识别符,来判断哪些数据已经完成了加密,从而至少可以缓减现有技术中的“如何判断哪些数据已经完成了加密”的问题;之后,则继续针对未带有初始识别符的数据,检测所述数据库主键id是否存在于灰度名单中,并将主键id存在于所述灰度名单中的数据进行加密,通过利用主键id是否存在于灰度名单中的判定过程,从而至少可以缓减现有技术中的“已经加密的数据被进行反复加密”的问题。从而实现了多重验证和协助加解密的信息,可以对已经投入使用的系统数据库中的数据进行加解密。
44.本实施例中,还对数据库中保存加密数据的数据格式进行了改进,其中包括:
45.在待处理的数据的字符串的前端,添加有加密识别符。在加密识别符中记录有当前使用的密钥序号。
46.具体的,加密识别符被用于判断当前数据是否被加密和确定使用的密钥序号。被加密的数据会在最前面加上加密识别符,这样读取数据时,根据数据的前缀,确定是否要进行解密。同时该符号可以用于进行灰度加密。而加密识别符的具体内容可以由开发人员设定,对于已经运行存在数据的系统,选择一个当前系统数据中没有使用过的特殊符号加字符的组合进行识别,同时在写入时,设置这个组合为非法字符,防止引起数据判断错误。并且,在加密识别符中,需要带入当前使用的密钥序号,从而可以在后期更换密钥时,按比例灰度替换原有的加密数据。例如:可以设置“$%encrypt_01%^”为加密识别符,其中特殊符号和单词用于确认当前数据是加密过的数据,“01”用于表明该条数据是使用序号为01的密钥进行加密的。后期密钥已经更换后,序号为“01”的密钥就可以只用于历史数据的解密,新配置的密钥进行加密。
47.可选的,还包括:在对待处理的数据进行加密的过程前,根据所述加密标识符,获取用于加密的密钥。利用所述密钥并通过对称加密,对待处理的数据的明文进行加密。并在对待处理的数据的明文进行加密前,在每一行数据的尾部添加数据库主键id。所谓校验的过程,则可以从所述明文中提取数据库主键id,并检测所提取的数据库主键id与数据库中当前的数据的数据库主键id是否一致;若不一致,则报错,认为数据发生篡改;若一致,则利用所述明文部分计算hash值,并检测所计算的hash值与数据格式中的enhash部分是否一致,若一致则去除明文部分中的数据id得到数据明文。
48.本实施例中,密文部分是由对称加密对明文使用密钥加密得来的,其中密钥的选择是由加密标识符中规定的。为了防止发生替换,明文在加密前可以在尾部加上当前这一行数据在数据库中的主键id,之后再进行加密。以便于在解密后,核对id和当前行的数据库id是否一致,如果不一致,认为数据发生了篡改,实际操作中,密文部分由“entext”标识。
49.本实施例中,在对待处理的数据进行加密的过程中,还包括:
50.利用所述待处理的数据的明文和当前数据库主键id,生成hash码。
51.其中,可以采用使用sha-256算法生成hash码,数据中记录hash码的部分用enhash标识,经过加密后的数据格式包括:加密标识符_{entext:密文部分,enhash:hash码部分}。
52.本实施例在实际应用中,可以实现大致如图2所示的加密流程,其中:
53.开始执行加密流程后,获取数据库主键id,之后获取密钥和密钥序号,将明文和数据库主键id组成待加密数据;之后,采用sha-256算法计算待加密数据的hash码,再采用aes算法对待加密数据进行计算得到密文,使用密钥序号生成加密识别符;然后,将加密识别符、密文和hash码组成最终数据;这样的流程,对于已经完成的加密的数据,可以利用hash码和数据自身主键id的组合校验数据是否被篡改。并在加密流程中,从加密识别符中读取密钥,也相当于使加密识别符承担了密钥序号的功能,而非单纯就作为一种“用于判断数据是否完成了加密”的识别符,使得加密识别符集成了更加多样的功能。以及,最后还可以校验一遍,即对于组成的最终数据,将其中的密文执行解密流程和明文对比,若二者对比不一致,则报错说明加密流程存在问题,若一致,则完成加密流程。即在加密环节后再解密还原一次,将解密还原出的明文与加密前的明文进行对比检测是否一致。从而避免了由于加密环节出问题导致最终解密不出正确的明文问题。
54.在加密前,获取当前系统的配置,得到密钥的具体内容和对应的序号(比如,当前使用的是2021年2号密钥),如果后期更换密钥,那么密钥序号也会产生响应的变化,从而实现不停机更换密钥。然后使用数据对应id和明文字符组合成待加密数据,使用sha-256算法计算出这一个组合数据的hash码。使用aes算法对待加密数据进行加密得到密文,利用之前获得的密钥序号和特殊识别符,得到加密识别符。利用加密识别符,密文,hash码组成最后待处理数据库的数据。数据格式为:加密标识符_{entext:密文部分,enhash:hash码部分}。
55.最后对密文执行解密流程,得到明文,对比待处理数据是否一致,两个字符串相同就认为整个流程没有问题,完成整个加密流程。
56.进一步的,本实施例中还设计了相应的解密方案,包括:
57.从数据库中读取数据,检测所读取的数据是否带有加密识别符。若否,则直接反馈所读取的数据。若是,则利用加密识别符获取密钥序号。获取所述密钥序号对应的密钥。
58.利用所获取的密钥对所读取的数据进行解密,得到数据的明文部分。
59.从明文部分中提取数据主键id,并检测所提取的数据主键id与数据库中当前的主键id是否一致。若不一致,则进行告警。
60.若一致,则利用所述明文部分计算hash值,并检测所计算的hash值与数据格式中的enhash部分是否一致,若一致则去除明文部分中的数据库主键id,从而得到原本的明文部分,以便于终端用户直接调用。
61.其中,在数据库对应的配置表中,记录至少一种密钥和密钥要与密钥序号的对应关系。例如图3所示的,
62.从数据库中读取数据,根据数据的前缀判断是否是加密,如果不带有加密识别符,就认为之前灰度加密没有把这个数据进行加密,那么就直接返回数据。如果带有加密识别符,就认为该字符串是加密数据,需要进行解密。
63.利用加密识别符获取密钥序号,利用序号从配置中读取密钥。具体的,对数据中entext部分进行解密得到明文和id。其中,可以支持同一数据库中的数据采用不同的密钥进行加密,只需要能够获取序号对应的密钥就可以完成解密。
64.对数据格式中密文部分进行解密,得到了明文加数据库主键id的字符串,对比解密得到的id和当前数据对应的主键id是否一致,如果不一致,就认为数据被篡改,需要进行
报错并通知相关维护人员进行处理。如果一致,就是用sha-256计算字符串的hash值,其中,明文中还存在数据库主键id,之后对比hash值和数据格式中的enhash部分是否一致,如果一致,就去掉明文中的数据库主键id部分,得到最终的明文。完成整个解密流程。
65.本实施例设计的数据加密方式,格式中包含了多重验证和协助加解密的信息,可以对已经投入使用的系统数据库中的数据进行加解密,利用灰度判断流程,可以实现部分数据的加解密。并且,对于已经完成的加密的数据,可以利用hash码和数据自身主键id的组合校验数据是否被篡改。并在加密流程中,利用加密识别符,带有密钥序号的功能。还可以支持不停机更换密钥,灰度加密等功能。进一步的,在数据中记录了加密使用的密钥序号,可以实现定期更换密钥,而无需对整个系统进行停止运营升级的操作。在加密流程中,利用设计的加密数据格式,支持了灰度加密功能,支持了数据是否加密的判断和整个加密流程正确性的验证。在解密流程中,利用设计的加密数据格式,支持了不同密钥加密的数据可以使用同一种方法进行解密,可以验证当前加密算法的可逆性和整个系统的正确性,支持解密过程中对是否篡改的判断。
66.本实施例还提供一种可灰度校验的数据保密装置,装置中包括了用于实现本实施例上述方法的功能模块,实际应用中这些功能模块可以编写为计算机程序并运行在服务器、工作站、管理员终端等具备计算功能的设备上。
67.具体的,该装置包括:
68.加密预处理模块,用于检测待处理的数据是否带有初始识别符,若未带有则获取数据库主键id;
69.加密模块,用于检测所述数据库主键id是否存在于灰度名单中;若所述数据库主键id存在于所述灰度名单中,则对待处理的数据进行加密后写入数据库。
70.解密预处理模块,用于从数据库中读取数据,检测所读取的数据是否带有加密识别符;若否,则直接反馈所读取的数据;
71.解密模块,用于若所读取的数据带有加密识别符,则利用加密识别符获取密钥序号;获取所述密钥序号对应的密钥,利用所获取的密钥对所读取的数据进行解密,得到数据的明文部分,其中,在数据库对应的配置表中,记录至少一种密钥和密钥要与密钥序号的对应关系。
72.本实施例还提供一种存储介质,存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现本实施例中所述的方法。
73.本实施例设计的数据加密方式,格式中包含了多重验证和协助加解密的信息,可以对已经投入使用的系统数据库中的数据进行加解密,利用灰度判断流程,可以实现部分数据的加解密。并且,对于已经完成的加密的数据,可以利用hash码和数据自身数据库主键id的组合校验数据是否被篡改。并在加密流程中,利用加密识别符,带有密钥序号的功能。还可以支持不停机更换密钥,灰度加密等功能。进一步的,在数据中记录了加密使用的密钥序号,可以实现定期更换密钥,而无需对整个系统进行停止运营升级的操作。在加密流程中,利用设计的加密数据格式,支持了灰度加密功能,支持了数据是否加密的判断和整个加密流程正确性的验证。在解密流程中,利用设计的加密数据格式,支持了不同密钥加密的数据可以使用同一种方法进行解密,可以验证当前加密算法的可逆性和整个系统的正确性,支持解密过程中对是否篡改的判断。
74.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献