买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于数据库连接池的数据库数据加解密方法及其系统_厦门商集网络科技有限责任公司_201910236052.1 

申请/专利权人:厦门商集网络科技有限责任公司

申请日:2019-03-27

公开(公告)日:2021-04-27

公开(公告)号:CN109960942B

主分类号:G06F21/60(20130101)

分类号:G06F21/60(20130101);G06F21/62(20130101);G06F16/242(20190101)

优先权:

专利状态码:有效-授权

法律状态:2021.04.27#授权;2019.07.26#实质审查的生效;2019.07.02#公开

摘要:本发明涉及基于数据库链接池的数据库数据加解密方法及其系统,通过直接在数据访问层(JDBC)自动进行加解密,利用JDBC层中能得到待执行SQL以及入参的特点,自动分析SQL执行语句,并进行语句拦截加解密转换,执行SQL动作。从而实现无人工大面积修改原有SQL的情况下,往系统中嵌入加解密敏感数据的功能。并且相似SQL执行语句,无需重复测试,只要有一条正确解析,即可认为与其类似的SQL也可正确得到执行,效率高,对原系统改动小,工作量少。

主权项:1.基于数据库连接池的数据库加解密方法,其特征在于,包括如下步骤:S1:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段;S2:通过数据访问层拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进入S3步骤;否则,进入步骤S5;S3:判断所述SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中,用于步骤S6的查询结果集解密,并进入步骤S4;当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S4;当所述SQL执行语句类型为INSERT语句时,则分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S5;S4:分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,执行加密操作,进入步骤S5;S5:在数据访问层拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果;S6:在数据访问层拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是,则对数据进行解密,并输出解密结果;S5步骤中,加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。

全文数据:基于数据库连接池的数据库数据加解密方法及其系统技术领域本发明涉及基于数据库连接池的数据库数据加解密方法及其系统,属于数据库安全信息领域。背景技术Druid是一种高效、功能强大的数据库连接池,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。其核心能力包含监控数据访问性能,数据库库密码加密,SQL执行日志,扩展JDBC等。由于现有已稳定运行的系统在设计之初并未考虑数据库敏感数据加解密的问题,如果人为修改代码中的SQL执行语句,代码重构范围广,测试难度大。如果使用现有技术的加解密扩展技术,则需要处理的加解密接口数据量大,处理流程慢,且调试耗时周期长。发明内容为了解决上述技术问题,本发明提出一种基于数据库连接池的数据库数据加解密方法及其系统,对数据库数据进行数据加解密扩展。本发明的技术方案一:基于数据库连接池的数据库加解密方法,包括如下步骤:S1:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段。S2:拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进入S3步骤;否则,进入步骤S5。S3:判断所述SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中,用于步骤S6的查询结果集解密,并进入步骤S4。当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S4。当所述SQL执行语句类型为INSERT语句时,则分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S5。S4:分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,执行加密操作,进入步骤S5。S5:拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果。S6:拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是,则对数据进行解密,并输出解密结果。S1步骤中,待加密数据库包括,entityClassNamSet,需要加密的实体名,tableNameList,需要加密的数据库表名,tableColumListMap,需要加密的数据库字段列表表名映射,createTableSql,建表语句;初始化时,需要向tableColumMap中配置需要加密的实体和需要加密的字段数组,并分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。S4步骤中,所述加密操作包括对所述SQL执行语句进行嵌套外围加密函数。S5步骤中,加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。S6步骤中,解密方法为对待解密字符串分别使用Base64和Java的加解密类库SecretKeySpec的对待解密字段进行AES解密得到解密后的字段。技术方案二基于数据库连接池的数据库加解密系统,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段。拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进行语句类型判断;否则,进行入参设置值替换操作。判断所述SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中;当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中;当所述SQL执行语句类型为INSERT语句时,分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中;分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,对其执行加密操作;拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果;拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是则对数据进行解密,并输出解密结果。待加密数据库包括,entityClassNamSet,需要加密的实体名,tableNameList,需要加密的数据库表名,tableColumListMap,需要加密的数据库字段列表表名映射,createTableSql,建表语句;初始化时,需要向tableColumMap中配置需要加密的实体和需要加密的字段数组,并分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。所述加密操作包括对所述SQL执行语句进行嵌套外围加密函数。加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。解密方法为对待解密字符串分别使用Base64和Java的加解密类库SecretKeySpec的对待解密字段进行AES解密得到解密后的字段。本发明具有如下有益效果:1、本发明的基于数据库连接池的数据库数据加解密方法及其系统,使用Druid数据库连接池的良好拓展性,使用其暴露出来的api进行敏感字段的加解密扩展,扩展效率高;2、本发明的基于数据库连接池的数据库数据加解密方法及其系统,直接在数据访问层JDBC自动进行加解密,利用JDBC层中能得到待执行SQL以及入参的特点,自动分析并加解密。使得无需再人工大面积修改原有SQL的情况下,实现往系统中嵌入加解密敏感数据的功能。3、本发明的基于数据库连接池的数据库数据加解密方法及其系统,使用Java的加解密类库SecretKeySpec对字节数组进行AES解密,使用Java的AES类库加密字节数组得到加密后的字节数组,加解密效果好,加密等级高,解密方便。附图说明图1为本发明的基于数据库连接池的数据库数据加解密方法流程图。具体实施方式下面结合附图和具体实施例来对本发明进行详细的说明。实施例一基于数据库连接池的数据库加解密方法,包括如下步骤:S1:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段。SQL执行语句为数据库的应用语句,包括查询,增加,更新,删除某条数据。在SQL解析其中进行初始化处理,SQL解析器其中包括SqlAnalysisMeta,为解析SQL后记录的元数据,主要是线程变量保存字段信息,横贯整个sql执行的生命周期。包含columnSet和parameterIndexSet两个字段和一个SqlAnalysisMeta线程变量,其中columnSet为保存待加解密字段,parameterIndexSet为保存字段入参下标。初始化SqlCryptoConfig需要加密的表的字段的配置类。包含如下字段:1.entityClassNamSet:需要加密的实体class名2.tableNameList:需要加密的数据库表名3.tableColumListMap:需要加密的数据库字段列表表名映射4.createTableSql:建表语句,druid的sql语法识别需要用到,让durid语法识别器能够理解表和字段之间的关系。初始化处理时,需要向tableColumMap中配置需要加密的实体key和需要加密的字段数组value。并由此分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。S2:拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进入S3步骤;否则,进入步骤S5。S3:判断SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中,用于步骤S6的查询结果集解密,并进入步骤S4。当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S4。“?”是sql中的匹配符号。这里“?”是入参。例如,代码中sql写法为:select*fromtb_userwherename=#{name},参数name在java中设置为’韩梅梅’。则框架会把sql解析成:select*fromtb_userwherename=?,并对入参’韩梅梅’做校验防止sql注入,校验无误后,会拼接成完整的sql:select*fromtb_userwherename=’韩梅梅’。当所述SQL执行语句类型为INSERT语句时,分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S5。S4:分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,进行加密操作。拦截sql,根据SQL的不同类型,使用不同的Visitor可以认为是处理器来处理。1.如果是statement是Select语句a.判断该条SELECT语句的表和字段是否在SqlCryptoConfig中。若存在,则说明该条SELECT语句所查询字段需要解密。将待解密查询字段存入SqlAnalysisMeta线程变量中。b.使用AnalysisConditionVisitor分析where后面的条件。2.如果statement是Update语句a.使用AnalysisUpdateVisitor处理更新语句的参数。b.使用AnalysisConditionVisitor分析where后面的条件。3.如果statement是Insert语句使用AnalysisUpdateVisitor处理插入语句的参数。AnalysisConditionVisitor:sql条件分析Visitor。获取操作符左右两边的字段:1.若左右字段均为空,则返回。如select*fromtb_userwhere1=12.若左右字段均不为空,且左右字段均在SqlCryptoConfig配置中,则返回。select*fromtb_userwherename=name3.若左右字段均不为空,或者左右字段其中一个不为空,需要修改sql,给字段加上加密函数。例如:select*fromtb_userwherename=?会被修改为select*fromtb_userwheredecrypt_functionname=?AnalysisUpdateVisitor:更新参数分析visitor。1.从PGUpdateStatement中获取items包含更新字段和入参信息,判断待更新字段是否存在于SqlCryptoConfig中。如果存在,则SqlAnalysisMeta在中记下入参下标和字段名的信息。2.从PGInsertStatement中获取待插入字段List和带插入值List,判断待插入字段是否存在于SqlCryptoConfig中。如果存在,则SqlAnalysisMeta在中记下入参下标和字段名的信息。S5:拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果。拦截操作在SQL加密过滤器中进行,预编译setString过滤器,拦截设置“?”入参的过程,并对参数进行加密。例如,第二步中已经经过加密处理后语句为select*fromtb_userwheredecrypt_functionname=?;name字段上已经套上了decrypt_function加密函数,为了语句能正确执行,也需要对入参进行加密。又因为需要加解密的字段都是字符串类型,所以在这个拦截器中,拦截setString方法,然后到元数据类SqlAnalysisMeta的线程变量中判断是否存在该变量,若存在则对入参进行加密。S6:拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是则对数据进行解密,并输出解密结果。拦截操作在SQL结果集过滤器中执行,在对结果集设置值时进行拦截时,本实施例中只拦截get_string。同样是到元数据的线程变量里找是否存在当前字段,如果存在,则对结果值进行解密。例如,selectnamefromtb_name。name字段因为是加密字段所以这里取出来的值可能是@#!$@&*$,代入解密工具类解密之后就变成“韩梅梅”。S1步骤中,待加密数据库包括,entityClassNamSet,需要加密的实体名,tableNameList,需要加密的数据库表名,tableColumListMap,需要加密的数据库字段列表表名映射,createTableSql,建表语句;初始化时,需要向tableColumMap中配置需要加密的实体和需要加密的字段数组,并分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。S4步骤中,所述加密操作包括对所述SQL执行语句进行嵌套外围加密函数。S5步骤中,加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。S6步骤中,解密方法为对待解密字符串分别使用Base64和Java的加解密类库SecretKeySpec的对待解密字段进行AES解密得到解密后的字段。AESUtils:AES加解密工具类:1.解密:a.待解密字符串先用Base64解密成字节数组,String→byte[]。b.使用Java的加解密类库SecretKeySpec对字节数组进行AES解密,byte[]→String。2.加密:将待加密字符串转化成UTF8的字节数组,String→byte[]。a.使用Java的AES类库加密字节数组得到加密后的字节数组,byte[]→byte[]。b.使用Base64加密字节数组,得到加密后的字符串,byte[]→String。本发明的基于数据库连接池的数据库数据加解密方法及其系统,使用Druid数据库连接池的良好拓展性,使用其暴露出来的api进行敏感字段的加解密扩展,扩展效率高。直接在数据访问层JDBC自动进行加解密,利用JDBC层中能得到待执行SQL以及入参的特点,自动分析并加解密。使得无需再人工大面积修改原有SQL的情况下,实现往系统中嵌入加解密敏感数据的功能。使用Java的加解密类库SecretKeySpec对字节数组进行AES解密,使用Java的AES类库加密字节数组得到加密后的字节数组,加解密效果好,加密等级高,解密方便。实施例二基于数据库连接池的数据库加解密系统,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段。拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进行语句类型判断;否则,进行入参设置值替换操作。判断所述SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中;当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中;当所述SQL执行语句类型为INSERT语句时,分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中;分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,对其执行加密操作;拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果;拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是则对数据进行解密,并输出解密结果。待加密数据库包括,entityClassNamSet,需要加密的实体名,tableNameList,需要加密的数据库表名,tableColumListMap,需要加密的数据库字段列表表名映射,createTableSql,建表语句;初始化时,需要向tableColumMap中配置需要加密的实体和需要加密的字段数组,并分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。所述加密操作包括对所述SQL执行语句进行嵌套外围加密函数。加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。解密方法为对待解密字符串分别使用Base64和Java的加解密类库SecretKeySpec的对待解密字段进行AES解密得到解密后的字段。本发明的基于数据库连接池的数据库数据加解密方法及其系统,使用Druid数据库连接池的良好拓展性,使用其暴露出来的api进行敏感字段的加解密扩展,扩展效率高。直接在数据访问层JDBC自动进行加解密,利用JDBC层中能得到待执行SQL以及入参的特点,自动分析并加解密。使得无需再人工大面积修改原有SQL的情况下,实现往系统中嵌入加解密敏感数据的功能。使用Java的加解密类库SecretKeySpec对字节数组进行AES解密,使用Java的AES类库加密字节数组得到加密后的字节数组,加解密效果好,加密等级高,解密方便。实施例三数据库初始化需要加密的表的字段的配置类,即SqlCryptoConfig。初始化时,向tableColumMap中配置需要加密的实体key和需要加密的字段数组value。在本实施例中,数据库为人员名单,及其对应的年龄,性别等数据。进入过滤器SqlAnalysisFilter:拦截SQL语句,本实施例中,操作人员输入的命令“selectnamefromtb_userwherename=韩梅梅”,即SQL执行的是查询姓名为韩梅梅的条目信息。首先,通过statement字段判断得出当前SQL是Select语句,判断该条Select语句的表和字段是否在SqlCryptoConfig中。结果为存在,则该条Select语句所查询字段,即韩梅梅对应的条目信息需要解密。将待解密查询字段存入SqlAnalysisMeta线程变量中。使用AnalysisConditionVisitor分析where后面的条件。左右字段均不为空,需要修改sql,给字段加上加密函数。selectnamefromtb_userwherename=韩梅梅被修改为selectnamefromtb_userwheredecrypt_functionname=韩梅梅。本实施例中,加密函数decrypt_function首先使用Java的AES类库加密字节数组进行字组转化加密,再对上一步结果使用Base64加密字节数组进行二次转化,得到加密后的UTF8字符串。加密过程:进入EncryptParameterFilter,预编译setString过滤器,拦截设置入参的过程,并对参数进行加密。在本实施例中,已经经过加密处理后语句为selectnamefromtb_userwheredecrypt_functionname=韩梅梅。name字段上已经套上了decrypt_function加密函数,为了语句能正确执行,也需要对入参进行加密。又因为需要加解密的字段都是字符串类型,所以在这个拦截器中,拦截setString方法,然后到元数据类SqlAnalysisMeta的线程变量对“韩梅梅”进行加密操作,转化成UTF8的字节数组:@#!$@&*$。执行SQL,即查找加密数据库中name值为@#!$@&*$的数据结果,其中条目中的其他信息也为UTF8的加密字节数组。进入DecryptResultSetFilter。在对结果集设置值时进行拦截。到元数据的线程变量里找,对结果值进行解密。代入解密工具类解密:待解密字符串先用Base64解密成字节数组,再使用Java的加解密类库SecretKeySpec对字节数组进行AES解密。首先之后@#!$@&*$变成“韩梅梅”,对应的年龄性别经过解密转化为源数据参数。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包含在本发明的专利保护范围内。

权利要求:1.基于数据库连接池的数据库加解密方法,其特征在于,包括如下步骤:S1:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段;S2:拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进入S3步骤;否则,进入步骤S5;S3:判断所述SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中,用于步骤S6的查询结果集解密,并进入步骤S4;当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S4;当所述SQL执行语句类型为INSERT语句时,则分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中,用于步骤S5的字段值加密,并进入步骤S5;S4:分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,执行加密操作,进入步骤S5;S5:拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果;S6:拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是,则对数据进行解密,并输出解密结果。2.根据权利要求1所述的基于数据库连接池的数据库加解密方法,其特征在于:S1步骤中,待加密数据库包括,entityClassNamSet,需要加密的实体名,tableNameList,需要加密的数据库表名,tableColumListMap,需要加密的数据库字段列表表名映射,createTableSql,建表语句;初始化时,需要向tableColumMap中配置需要加密的实体和需要加密的字段数组,并分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。3.根据权利要求2所述的基于数据库连接池的数据库加解密方法,其特征在于:S4步骤中,所述加密操作包括对所述SQL执行语句进行嵌套外围加密函数。4.根据权利要求3所述的基于数据库连接池的数据库加解密方法,其特征在于:S5步骤中,加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。5.根据权利要求4所述的基于数据库连接池的数据库加解密方法,其特征在于:S6步骤中,解密方法为对待解密字符串分别使用Base64和Java的加解密类库SecretKeySpec的对待解密字段进行AES解密得到解密后的字段。6.基于数据库连接池的数据库加解密系统,其特征在于,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:对待加密数据库的表及字段进行初始化处理,并输入SQL执行语句,其中,所述初始化处理包括向待加解密数据库中配置需要加密的表及字段;拦截SQL执行语句对其进行字段分析,当所述SQL执行语句包含待加解密数据库的表及字段时,则进行语句类型判断;否则,进行入参设置值替换操作;判断所述SQL执行语句的类型:当所述SQL执行语句类型为SELECT语句时,则分析查询字段,将待解密字段信息保存到缓存中;当所述SQL执行语句类型为UPDATE语句时,则分析更新字段,将参数匹配符“?”的次序和字段名保存到缓存中;当所述SQL执行语句类型为INSERT语句时,分析插入字段,将参数匹配符“?”的次序和字段名保存到缓存中;分析所述SQL执行语句中WHERE关键词之后的条件字段,当WHERE之后的操作符为=、!=、、=、、like、notlike、is、isnot之一时,则提取出操作符左右两边的字段并判断,当左右都存在字段时,则无需做处理;当左边或者右边单边存在字段时,判断该字段是否为待加密字段,若是则修改所述SQL执行语句,对其执行加密操作;拦截所述SQL执行语句的入参的设置值,根据当前处理的字段次序到缓存中提取字段名,将字段名和字段值代入加密方法得出加密后的新的字段名和字段值,替换原入参的设置值,并执行SQL执行语句输出执行结果;拦截SQL执行结果的结果集设置值,判断当前设置的字段名是否为需要解密字段,若是则对数据进行解密,并输出解密结果。7.根据权利要求6所述的基于数据库连接池的数据库加解密系统,其特征在于:待加密数据库包括,entityClassNamSet,需要加密的实体名,tableNameList,需要加密的数据库表名,tableColumListMap,需要加密的数据库字段列表表名映射,createTableSql,建表语句;初始化时,需要向tableColumMap中配置需要加密的实体和需要加密的字段数组,并分别初始化entityClassNameSet、tableNameList、tableColumList、createTableSql。8.根据权利要求7所述的基于数据库连接池的数据库加解密系统,其特征在于:所述加密操作包括对所述SQL执行语句进行嵌套外围加密函数。9.根据权利要求8所述的基于数据库连接池的数据库加解密系统,其特征在于:加密方法为依次使用Java的AES类库和Base64对待加密字段进行转换得到加密后的字段。10.根据权利要求9所述的基于数据库连接池的数据库加解密系统,其特征在于:解密方法为对待解密字符串分别使用Base64和Java的加解密类库SecretKeySpec的对待解密字段进行AES解密得到解密后的字段。

百度查询: 厦门商集网络科技有限责任公司 基于数据库连接池的数据库数据加解密方法及其系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。