System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及加解密安全领域,具体提供一种敏感信息字段加密方法及装置。
技术介绍
1、现有的数据库中敏感信息字段加密方法常用的有两种,一种是在实体类的敏感字段上加自定义注解,通过切面的方式对字段进行拦截,这种方式对代码的侵入性较大,而且如果要访问的敏感信息字段过多的话,将难以扩展和维护。
2、另一种是基于mybatis拦截器的方式,虽然相比前者来说代码侵入性较小,但是只能应用在使用mybatis框架的应用程序内,不支持jdbctemplate等工具类,存在一定的局限性,并且可扩展性和可维护性仍然存在问题。
技术实现思路
1、本专利技术是针对上述现有技术的不足,提供一种实用性强的敏感信息字段加密方法。
2、本专利技术进一步的技术任务是提供一种设计合理,安全适用的敏感信息字段加密装置。
3、本专利技术解决其技术问题所采用的技术方案是:
4、一种敏感信息字段加密方法,在业务操作中分为两类,一类为从数据库表中查询信息,这种对于数据库的操作为数据库查询语言;
5、另一类是向数据库表里写入信息或更新、删除信息,这种叫做数据操纵语言,构造一个自定义的敏感信息字段过滤器,通过所述过滤器,所述数据操纵语言对敏感信息参数列进行加密入库操作,而数据查询语言获取到敏感信息解密后的值,完成数据库敏感信息字段的加解密操作。
6、进一步的,在自定义敏感信息字段过滤器时,基于druid数据库连接池,先引入开源的druid依赖包,将敏感信息字段
7、根据当前数据源解析出当前所使用的数据库类型,为后面数据库语言兼容做准备,将敏感信息字段的json文件解析出来,用于判断字段是否需要进行加解密操作。
8、进一步的,对于业务操作中的数据操纵语言和数据查询语言条件查询的条件语句来说,重写过滤器接口,参数包括预编译语句代理对象、参数列索引以及参数列值;
9、所述预编译语句代理对象包含具体的sql,解析sql获取包含的所有参数列,通过参数列索引获取到对应的参数列名,从而判断出参数列是否是敏感信息字段,如果是敏感信息字段,则对参数列值进行加密并返回加密后的列值;
10、如果列不是敏感信息字段,则直接返回原始参数列值。
11、进一步的,业务操作中数据查询语言来说,重写结果集,参数包括结果集代理对象、查询列索引或查询列名称;
12、首先,调用父类的同名方法获取查询列的查询结果值,对于参数是查询列名称的结果集方法,直接找出查询列名称是否为敏感信息字段,如果是敏感信息字段,则将查询结果值解密后返回,否则,直接返回查询结果值;
13、而对于参数是查询列索引的结果集方法,先根据结果集代理对象获取到结果集元数据,从元数据中根据列索引得到列名称,进而使用判断敏感信息字段的方法,对查询结果值进行解密操作,通过重写结果集方法就实现了对数据库敏感信息字段解密的操作。
14、进一步的,在druid数据源中sql解析器的语法解析过程会将sql语句转化为抽象语法树进行解析;
15、抽象语法树的节点类型包含sql对象、sql表达式以及sql语句三种抽象类型,以三种类型为基础构成了抽象语法树各种节点,sql对象是sql表达式以及sql语句的抽象,sql表达式是sql中的一个表达式,sql语句则是增删改查操作语句。
16、进一步的,druid数据源提供的工具类将原始sql语句转化为抽象语法树进而获得sql语句对象,然后结合sql访问器,遍历抽象语法树。
17、进一步的,对数据库敏感信息字段的加密分成了两类情况,一类是数据操纵语言;
18、另一类是数据操纵语言和数据查询语言中的where条件语句的敏感信息字段进行加密后与数据库存储数据匹配的条件列加密,这两类情况都依赖于对sql语句的解析,进而判断出一个条件列是否是敏感信息字段。
19、一种敏感信息字段加密装置,包括:至少一个存储器和至少一个处理器;
20、所述至少一个存储器,用于存储机器可读程序;
21、所述至少一个处理器,用于调用所述机器可读程序,执行一种敏感信息字段加密方法。
22、本专利技术的一种敏感信息字段加密方法及装置和现有技术相比,具有以下突出的有益效果:
23、本专利技术通过构造数据库敏感信息字段过滤器,实现了业务操作中的新增、删除、更新等数据操纵语言和数据查询语言的条件查询语句等对数据库敏感信息字段的加密操作,实现了业务操作中的数据查询语言对数据库敏感信息字段的解密操作。
24、通过构造sql访问器实现了对不同数据库sql语句的解析,从而实现了对oracle数据库和mysql数据库等多种数据的兼容。
本文档来自技高网...【技术保护点】
1.一种敏感信息字段加密方法,其特征在于,在业务操作中分为两类,一类为从数据库表中查询信息,这种对于数据库的操作为数据库查询语言;
2.根据权利要求1所述的一种敏感信息字段加密方法,其特征在于,在自定义敏感信息字段过滤器时,基于Druid数据库连接池,先引入开源的Druid依赖包,将敏感信息字段都放入一个JSON文件里;
3.根据权利要求2所述的一种敏感信息字段加密方法,其特征在于,对于业务操作中的数据操纵语言和数据查询语言条件查询的条件语句来说,重写过滤器接口,参数包括预编译语句代理对象、参数列索引以及参数列值;
4.根据权利要求3所述的一种敏感信息字段加密方法,其特征在于,业务操作中数据查询语言来说,重写结果集,参数包括结果集代理对象、查询列索引或查询列名称;
5.根据权利要求4所述的一种敏感信息字段加密方法,其特征在于,在Druid数据源中SQL解析器的语法解析过程会将SQL语句转化为抽象语法树进行解析;
6.根据权利要求5所述的一种敏感信息字段加密方法,其特征在于,Druid数据源提供的工具类将原始SQL语句转化
7.根据权利要求6所述的一种敏感信息字段加密方法,其特征在于,对数据库敏感信息字段的加密分成了两类情况,一类是数据操纵语言;
8.一种敏感信息字段加密装置,其特征在于,包括:至少一个存储器和至少一个处理器;
...【技术特征摘要】
1.一种敏感信息字段加密方法,其特征在于,在业务操作中分为两类,一类为从数据库表中查询信息,这种对于数据库的操作为数据库查询语言;
2.根据权利要求1所述的一种敏感信息字段加密方法,其特征在于,在自定义敏感信息字段过滤器时,基于druid数据库连接池,先引入开源的druid依赖包,将敏感信息字段都放入一个json文件里;
3.根据权利要求2所述的一种敏感信息字段加密方法,其特征在于,对于业务操作中的数据操纵语言和数据查询语言条件查询的条件语句来说,重写过滤器接口,参数包括预编译语句代理对象、参数列索引以及参数列值;
4.根据权利要求3所述的一种敏感信息字段加密方法,其特征在于,业务操作中数据查询语言来说,重...
【专利技术属性】
技术研发人员:李周,于春晓,宁方刚,陈兆亮,
申请(专利权)人:浪潮软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。