一种用于数据库的数据加密及检索方法
【专利摘要】本发明公开了一种用于数据库的数据加密及检索方法,包括如下步骤:a)先利用单向加密算法对原数据加密,在保持原数据顺序不变的情况下,生成非解密的可索引头部;b)接着再继续对原数据加密生成可解密的密文数据;c)将可索引头部和可解密的密文数据组合在一起生成加密组合数据存储到数据库中;所述步骤a)中的单向加密算法为MD5、SHA或HMAC;所述步骤b)中的加密算法为对称密钥加密算法。本发明提供的用于数据库的数据加密及检索方法,通过组合使用可索引头部和可解密的密文数据对原数据全部采用密文进行加密存储,利用可索引头部对加密后的数据进行快速检索,从而避免全表扫描且能保证解密数据的正确性及搜索数据的安全性。
【专利说明】—种用于数据库的数据加密及检索方法
【技术领域】
[0001]本发明涉及一种数据加密及检索方法,尤其涉及一种用于数据库的数据加密及检索方法。
【背景技术】
[0002]随着计算机技术的飞速发展,数据库的应用已经十分广泛,深入到了各个领域。特别是进入云时代和大数据时代后,越来越多重要的数据存入了数据库中。但是,如果政府机构的一些政策法规、绝密文件,商业机构的一些商业秘密,金融机构的个人信息和金融财产信息等等各种敏感数据都以明文形式储存,那将是灾难性的。只要稍微具有一点数据库的专业知识,就可以轻而易举的获取到这些关系到国家的安全、企业的兴衰的信息。因此,如何有效地保证数据库系统的安全,实现数据库的保密性、完整性、有效性和可用性,已经成为业界人士研究的重要课题。目前,国内使用的主流商业数据库都从国外进口,由于法律的限制,安全数据库系统基本不对中国出口,因此对现有主流商业数据库系统的加密、保护技术和密文数据的高效检索技术的需求十分强烈。
[0003]现有技术中,一般来说,数据加密是把纯文本数据利用DES,3DES,AES等的对称密钥算法进行永久变形。这种变形的数据在完全丧失加密之前的文本意义状态下储存到数据库中。如果在这时生成储存数据的索引表,排序(ordering)将变得乱七八糟无法进行索引搜索,从而导致数据库管理系统不能使用索引表,而只能进行整个表格的扫描(Table fullScan)ο这种全表扫描性能大幅下降(最多能带来数十倍的性能低下),给数据库运营带来致命的问题。
[0004]由上可见,现有的技术是直接对数据利用DES,3DES,AES等对称密钥算法进行永久变形,进行粗暴式的加密,存在如下缺点:
[0005]I)、数据完全变形。这种变形的数据完全丧失加密之前的文本意义,储存到数据库中的数据变的杂乱无章,无法进行有效的序列和索引。
[0006]2)、无法进行索引操作。这个时候产生的索引表变的杂乱无章,无法进行有效的索弓I,这就导致了对加密表的查询,只能进行全表扫描(TABLEFULLSCAN)。
[0007]3)、查询性能大幅下降。这种技术虽然在形式上实现了数据的加密,但是在实际的操作中却存在不可操作的问题。因为目前的数据量不再是以前传统意义上的小数据加密,而是大批量数据的加密。这样产生的数据效果是一堆杂乱无章的数据的全表扫描,要查出想要的结果,将是一个漫长的过程,基本上没有实际的操作意义。
[0008]4)、数据加密有漏洞。这种加密技术,在查询的时候,会生成一条加密后的查询条件语句,这种语句很容易被非法捕获并进行反解密,数据其实是能解密出来的,从而安全存在一定的漏洞。
【发明内容】
[0009]本发明所要解决的技术问题是提供一种用于数据库的数据加密及检索方法,即能对原数据进行加密存储,又能保证对加密后的数据进行快速检索,避免全表扫描,且能保证解密数据的正确性及搜索数据的安全性。
[0010]本发明为解决上述技术问题而采用的技术方案是提供一种用于数据库的数据加密方法,其中,包括如下步骤:a)先利用单向加密算法对原数据加密,在保持原数据顺序不变的情况下,生成非解密的可索引头部山)接着再继续对原数据加密生成可解密的密文数据;c)将可索引头部和可解密的密文数据组合在一起生成加密组合数据存储到数据库中。
[0011]上述的用于数据库的数据加密方法,其中,所述步骤a)中的单向加密算法为MD5、SHA或HMAC ;所述步骤b)中的加密算法为对称密钥加密算法。
[0012]上述的用于数据库的数据加密方法,其中,所述对称密钥加密算法为AES、ARIA、SEED、TDES 或 DES。
[0013]上述的用于数据库的数据加密方法,其中,所述步骤c)中还包括在组合数据的后面插入可索引头部的数据长度信息,然后再生成加密组合数据存储到数据库中。
[0014]本发明为解决上述技术问题还提供一种用于数据库的数据检索方法,其中,包括如下步骤:a)获取上述的数据加密方法生成的加密组合数据;b)接着对待搜索数据采用相同的单向加密算法生成加密搜索数据,并和步骤a)中获取的加密组合数据中的可索引头部进行检索比对;c)如果存在匹配的可索引头部,则确定该加密组合数据中的密文数据的起始位置,并对密文数据进行解密获取查询数据。
[0015]上述的用于数据库的数据检索方法,其中,所述步骤a)和步骤b)中的单向加密算法为MD5、SHA或HMAC ;所述步骤a)和步骤c)中的加密算法为对称密钥加密算法。
[0016]上述的用于数据库的数据检索方法,其中,所述步骤a)还包括将加密组合数据中的可索引头部生成索引表,所述步骤b)利用所述索引表对所述加密搜索数据进行检索。
[0017]上述的用于数据库的数据检索方法,其中,所述步骤c)根据索引表中的可索引头部确定密文数据的起始位置,所述加密组合数据中对应索引表中的可索引头部后面的数据即为密文数据的起始位置。
[0018]上述的用于数据库的数据检索方法,其中,所述步骤a)中加密组合数据的后面插入有可索引头部的数据长度信息,所述步骤c)根据加密组合数据最后的可索引头部的数据长度信息确定密文数据的起始位置。
[0019]上述的用于数据库的数据检索方法,其中,所述步骤a)中加密组合数据中的密文数据前插入有预设起始标识符,如果加密组合数据中存在多个预设起始标识符,依次对预设起始标识符后的密文数据进行解密,然后再对解密数据采用相同的单向加密算法加密并与加密组合数据中的可索引头部进行比较,直至两者完全匹配,则当前预设起始标识符为密文数据的起始位置。
[0020]本发明对比现有技术有如下的有益效果:本发明提供的用于数据库的数据加密及检索方法,通过组合使用可索引头部和可解密的密文数据对原数据全部采用密文进行加密存储,利用可索引头部对加密后的数据进行快速检索,从而避免全表扫描,且能保证解密数据的正确性及搜索数据的安全性。
【专利附图】
【附图说明】
[0021]图1为本发明用于数据库的数据加密流程示意图;[0022]图2为本发明用于数据库的数据加密变换及组合示意图;
[0023]图3为本发明用于数据库的数据检索流程示意图。
【具体实施方式】
[0024]下面结合附图和实施例对本发明作进一步的描述。
[0025]图1为本发明用于数据库的数据加密流程示意图。
[0026]请参见图1,本发明提供的用于数据库的数据加密方法包括如下步骤:
[0027]步骤101:先利用单向加密算法对原数据加密,在保持原数据顺序不变的情况下,生成非解密的可索引头部;所述单向加密算法可以为MD5、SHA或HMAC等各种现有的算法,利用单向加密算法既可保持原数据顺序不变生成可索引头部,又能保证索引头部非可逆,不可解密。
[0028]步骤102:接着再继续对原数据加密生成可解密的密文数据;如AES、ARIA、SEED、TDES或DES等对称密钥加密算法。
[0029]步骤103:将可索引头部和可解密的密文数据组合在一起生成加密组合数据存储到数据库中。
[0030]步骤104:为了便于正确快速定位加密组合数据中可解密的密文数据的起始位置,还可在组合数据的后面插入可索引头部的数据长度信息,然后再生成加密组合数据存储到数据库中。
[0031]图2为本发明用于数据库的数据加密变换及组合示意图。
[0032]请继续参见图2,把原数据110变换成可搜索的加密组合数据100过程如下:
[0033]首先将原数据110加密成索引头部:这时储存在原表格的数据,或者从应用(App)中直接输入的原始数据利用单向加密算法加密成索引头部,这里使用的单向加密算法是通常使用的公开算法,所以可以在多种算法中选择使用。因此,索引头部101保持原数据110的顺序,并在维持不被解密的状态下被加密。如图2的原数据110中保存着的“abcdefgh”通过单方向数据加密算法,被加密成索引头部“QlrxKgdDUCSyLp0gFbZ4a0MklWo=”。这里根据使用的算法变化的数据形式会有所不同。同样地,原始数据“12345678”也进行单向加密生成可索引头部 “ fCIvspJ9goryLlkhN0iTJIBjfA0=”。
[0034]其次是将原数据110继续加密成加密数据102。这时,保存在原数据表中储存的原数据110,或是从应用软件中直接输入的原数据110是根据的标准的块加密算法或单方向算法被加密。在这里提到的块加密算法基于AES,ARIA, SEED, TDES或DES等对称加密算法,但不限与此。单方向法则是指SHA-l、SHA-2等HASH函数,但算法不限于此,本实施例中采用的是SHA-1加密算法。
[0035]因此,加密数据102与加密之前的原数据相比是完全不同,但可以被解读。如图2中的原始数据‘abcdefgh’以块加密算法或单向算法加密成:
[0036]“ 9E7AD9F674BD00CC6E45F510D4F79FB547091F8F61BF7197”。
[0037]接着将索引头部101及加密数据102相互结合的生成组合数据100。即这个阶段的加密组合数据100是‘索引头部101’+ ‘加密数据102’格式。因此,从’abcdefgh’的原始数据110中,各个加密后的索引头部101及加密数据102相结合后形成:‘QlrxKgdDUCsyLp0gFbz4a0MklWo=9E7AD9F674BD00CC6E45F510D4F79FB547091F8F61BF7197’ 格式的组合数据。
[0038]最后将索引头部长度信息103插入到加密组合数据100 ;即最终的加密组合数据会呈现出‘索引头部101’ + ‘加密数据102’ + ‘索引头部的长度信息103’格式。
[0039]例如‘abcdefgh’原数据110,加密后最终生成的加密组合数据100为:‘QlrxKgdDUCsyLp0gFbz4a0Mklffo=9E7AD9F674BD00CC6E45F510D4F79FB547091F8F61BF7197,形式,索引头部长度信息103占28字节(byte)。因此,索引头部长度信息103以‘0028’的形态插入到加密组合数据100中,将会在索引头部101结合的加密数据102需要解密时调用。这样的加密组合数据100储存在数据库中。一方面索引头部的长度信息103可以考虑索引头部101的可变性长度的变化,确保不发生错误的搜索,提供加密数据102的解密。
[0040]本发明还提供一种通过前面提及到的方法来搜索所产生的加密组合数据的检索方法,具体检索过程如图3所示:
[0041]步骤301:获取上述的数据加密方法生成的加密组合数据100 ;
[0042]步骤302:接着对待搜索数据采用相同的单向加密算法生成加密搜索数据,并和步骤301中获取的加密组合数据100中的可索引头部进行检索比对;单向加密的搜索数据会保持原有顺序,并且不会被解密。此时,加密的搜索数据适用于对应的搜索索引头部101上;随着索引头部的搜索,包含的组合加密数据100也会被搜索。
[0043]步骤303:如果存在匹配的可索引头部,则确定该加密组合数据中的密文数据的起始位置,并对密文数据进行解密获取查询数据。本发明优选通过索引头部101的长度信息,确定加密数据102的起始位置,从组合加密数据100中确定要解密的加密数据。如果搜索到组合数据:
[0044]<QlrxKgdDUCsyLp0gFbz4a0Mklffo=9E7AD9F674BD00CC6E45F510D4F79FB547091F8F61BF71970018’ 中,‘QlrxKgdDUCsyLp0gFbz4a0MklWo=’ 是 28 字节的索引头部 101 ;所以 ‘9’就是加密数据102的起始位置。
[0045]最后,从起始位置复原加密数据102。这时,从前面所提的起始位置‘9’包含在内的 ‘9E7AD9F674BD00CC6E45F510D4F79FB547091F8F61BF7197’ 数据部分被解密。这样加密数据102会解密成原数据110。
[0046]为了加快检索,其中,本发明还可将加密组合数据中的可索引头部生成索引表,然后利用所述索引表对所述加密搜索数据进行检索。除了使用索引头部的长度信息103快速定位加密数据102的起始位置外,所述步骤303也可根据索引表中的可索引头部确定密文数据的起始位置,所述加密组合数据中对应索引表中的可索引头部后面的数据即为密文数据的起始位置。此外,所述加密组合数据100中的密文数据前插入有预设起始标识符进行定位,如果加密组合数据中存在多个预设起始标识符,依次对预设起始标识符后的密文数据进行解密,然后再对解密数据采用相同的单向加密算法加密并与加密组合数据中的可索引头部进行比较,直至两者完全匹配,则当前预设起始标识符为密文数据的起始位置。
[0047]综上所述,本发明提供的用于数据库的数据加密及检索方法,把原数据加密成可解密状态的加密数据,生成原数据加密成能维持顺序且不可解密状态的索引头部,并生成相结合的组合加密数据,还可把索引头部长度信息插入到组合加密数据中,在搜索组合数据时只使用索引头部,并根据与搜索到的索引头部来解密组合的加密数据。
[0048]因为本发明可搜索的索引头部包含在组合数据里,就算不生成特殊的索引表,普通的表也可以实现索引搜索。同时,由于所有的索引头部和加密数据都是加密的,故能够保证信息的安全性。此外,由于搜索的内容也是采用单向的加密方法,因此对于专业和非专业的用户来说,也无法进行数据的解密;而且索引头部长度信息已经插入到组合数据中,可以随时确定加密数据的起始位置,不管索引头部的长度,可以正确解密原数据。具体优点如下:
[0049]I)、数据以原有序列保存。由于这种加密的方法是采用单向加密的方法,因此数据将保持原有序列。
[0050]2)、数据表查询可进行索引操作。这个时候产生的索引表,是按序列进行的,因此可以使用到索引,提高数据的检索时间。
[0051]3)、查询性能和加密前基本持平。由于加密数据采用了索引查询,只是数据的长度会比加密前增加,所以查询速度会有部分损耗,但是对于批量数据的查询,速度基本可以持平,损耗忽略不计。
[0052]4)、数据加密安全性高。由于数据加密是采用了单向加密的方法,数据解密是不可逆的,因此无法通过sql进行解密,提高了安全性。
[0053]虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
【权利要求】
1.一种用于数据库的数据加密方法,其特征在于,包括如下步骤: a)先利用单向加密算法对原数据加密,在保持原数据顺序不变的情况下,生成非解密的可索引头部; b)接着再继续对原数据加密生成可解密的密文数据; c)将可索引头部和可解密的密文数据组合在一起生成加密组合数据存储到数据库中。
2.如权利要求1所述的用于数据库的数据加密方法,其特征在于,所述步骤a)中的单向加密算法为MD5、SHA或HMAC ;所述步骤b)中的加密算法为对称密钥加密算法。
3.如权利要求2所述的用于数据库的数据加密方法,其特征在于,所述对称密钥加密算法为 AES、ARIA、SEED、TDES 或 DES。
4.如权利要求1所述的用于数据库的数据加密方法,其特征在于,所述步骤c)中还包括在组合数据的后面插入可索引头部的数据长度信息,然后再生成加密组合数据存储到数据库中。
5.一种用于数据库的数据检索方法,其特征在于,包括如下步骤: a)获取权利要求1所述的数据加密方法生成的加密组合数据; b)接着对待搜索数据采用相同的单向加密算法生成加密搜索数据,并和步骤a)中获取的加密组合数据中的可索引头部进行检索比对; c)如果存在匹配的可索引头部,则确定该加密组合数据中的密文数据的起始位置,并对密文数据进行解密获取查询数据。
6.如权利要求5所述的用于数据库的数据检索方法,其特征在于,所述步骤a)和步骤b)中的单向加密算法为MD5、SHA或HMAC;所述步骤a)和步骤c)中的加密算法为对称密钥加密算法。
7.如权利要求5所述的用于数据库的数据检索方法,其特征在于,所述步骤a)还包括将加密组合数据中的可索引头部生成索引表,所述步骤b)利用索引表对所述加密搜索数据进行检索。
8.如权利要求7所述的用于数据库的数据检索方法,其特征在于,所述步骤c)根据索引表中的可索引头部确定密文数据的起始位置,所述加密组合数据中对应索引表中的可索引头部后面的数据即为密文数据的起始位置。
9.如权利要求5所述的用于数据库的数据检索方法,其特征在于,所述步骤a)中加密组合数据的后面插入有可索引头部的数据长度信息,所述步骤c)根据加密组合数据最后的可索引头部的数据长度信息确定密文数据的起始位置。
10.如权利要求5所述的用于数据库的数据检索方法,其特征在于,所述步骤a)中加密组合数据中的密文数据前插入有预设起始标识符,如果加密组合数据中存在多个预设起始标识符,依次对预设起始标识符后的密文数据进行解密,然后再对解密数据采用相同的单向加密算法加密并与加密组合数据中的可索引头部进行比较,直至两者完全匹配,则当前预设起始标识符为密文数据的起始位置。
【文档编号】G06F21/60GK103927357SQ201410150462
【公开日】2014年7月16日 申请日期:2014年4月15日 优先权日:2014年4月15日
【发明者】程永新, 符强, 曾天水 申请人:上海新炬网络技术有限公司