一种基于SM3国密的数据库表级数据隔离现方法及系统技术方案

技术编号:33655951 阅读:7 留言:0更新日期:2022-06-02 20:35
本发明专利技术特别涉及一种基于SM3国密的数据库表级数据隔离现方法及系统。该基于SM3国密的数据库表级数据隔离现方法及系统,利用用户手机号结合密码,通过SM3国密计算生成动态的数据库表名;数据查询时,通过用户信息动态计算表名进行sql语句的动态拼接,从而避免用户专有表名的暴露,实现用户之间的数据隔离;通过增加后缀的方式实现数据库表的水平拆分,并记录原始数据库表名与扩展库表名的映射关系,以便用户查询与使用。该基于SM3国密的数据库表级数据隔离现方法及系统,利用SM3国密算法对数据库表名进行加密,不仅能够确保用户之间的数据隔离与用户表的隐私保密性,而且不依赖第三方的中间件,降低了系统的复杂度和维护成本,适宜推广应用。适宜推广应用。适宜推广应用。

【技术实现步骤摘要】
一种基于SM3国密的数据库表级数据隔离现方法及系统


[0001]本专利技术涉及密码学和数据安全
,特别涉及一种基于SM3国密的数据库表级数据隔离现方法及系统。

技术介绍

[0002]1)密码散列函数
[0003]密码散列函数(Cryptographic hash function),又译为加密散列函数、密码散列函数、加密散列函数,是散列函数的一种。它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。这样的单向函数被称为“现代密码学的驮马”。这种散列函数的输入数据,通常被称为消息(message),而它的输出结果,经常被称为消息摘要(message digest)或摘要(digest)。
[0004]SM3一种国产的商用算法。在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开,其安全性及效率与SHA

256相当。
[0005]2)分库分表
[0006]在当前的实际应用中,数据存储的数据量随着时间的增长也会变的越来越大,对应数据库查询时的QPS(Query Per Second,每秒查询率)也将逐步增多,同时也将长时间的占用数据库的读写资源,因而成为业务发展缓慢的原因之一。因此,长时间应用的数据库就需要进行数据库性能方面的优化。
[0007]但是,一般的关系型数据库表存储方式都是基于数据行进行行存储的,即使实现数据隔离也仅是通过某一字段如:租户id等进行数据隔离的。在实际应用时,一般的数据库表命名往往是见名知义的,并且在得知用户的租户id等信息后也能很快定位到具体用户数据;并且,当遇到数据量过大的情况时,会采取相关中间件进行分库分表,不易于维护。由此可以看出,当单表数据量过大并超过一定量级时,无论是对于索引的优化还是查询 sql的优化都无法解决存在的性能问题。
[0008]基于上述情况,本专利技术提出了一种基于SM3国密的数据库表级数据隔离现方法及系统。

技术实现思路

[0009]本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的基于SM3国密的数据库表级数据隔离现方法及系统。
[0010]本专利技术是通过如下技术方案实现的:
[0011]一种基于SM3国密的数据库表级数据隔离现方法,其特征在于:包括以下步骤:
[0012]步骤1:利用用户手机号结合密码,通过SM3国密计算生成动态的数据库表名;
[0013]每个用户的手机号结合密码必然是不相同的,通过国密SM3加密算法后无法进行用户信息反推,在后台代码中也能避免数据库表名操作时的明文拼接,从而保证用户的数据库表信息的安全性;
[0014]不同用户根据用户信息的不同有不同数据库表,从而使得不同用户的数据之间实现了实质性的数据隔离,适用于多租户的系统形式,也便于运维操作的实施;
[0015]步骤2:数据查询时,通过用户信息动态计算表名进行sql语句的动态拼接,从而避免用户专有表名的暴露,同时也实现了用户之间的数据隔离,使得运维单一用户的数据变得快捷有效;
[0016]步骤3:当数据库表数据量过大时,通过增加后缀的方式实现数据库表的水平拆分,并记录原始数据库表名与扩展库表名的映射关系,以便用户查询与使用。
[0017]所述步骤1中,首先用户通过系统进行账号的注册,并在注册后上传用户的基础信息,包括但不限于用户手机号、用户注册名和加密后的注册密码,注册账户成功后进行数据库表的初始化。
[0018]在后端进行代码开发时,根据单一手机号只能标识单一用户的业务逻辑,利用统一的数据库表名计算出该用户的唯一业务数据库表名前缀;为了区别具体的业务功能表,根据不同的请求对应的不同业务的业务编码来获取所需要的所有数据库表名后缀;
[0019]所述步骤1中,在后端进行代码开发时,先通过用户登录时的唯一身份令牌来获取用户的唯一标识并查询用户手机号以及加密密码信息,将用户手机号结合SM3加密后的账号密码再次进行SM3加密,并将加密后的hash字符串作为该用户数据库表名的前缀;
[0020]利用不同的业务编码标识不同业务,将数据库表名后缀设置为下滑线+业务代码 code。
[0021]所述步骤2中,系统为该用户所有不同业务所对应的数据库表完成初始化后,数据查通过动态拼接的方式将不同业务的不同数据库表名作为参数传递到具体的sql语句中,来完成业务数据的查询。
[0022]多表之间的连接查询通过替换不同的业务后缀来实现,从而使得即使从数据库sql语句文件中也无法获知用户的具体数据库表名称,从而实现对用户数据库表的加密。
[0023]所述步骤3中,对数据库表进行水平拆分时,步骤如下:
[0024]步骤3.1:设置数据库表的单表阈值,通过定时任务获取所有原始单表的数据容量,当单表容量到达预设阈值时,通过sql脚本新建以原始数据库表名为基础的分表;
[0025]步骤3.2:通过在原始数据库表名的基础上加上后缀数字编号作为新表名的方式创建新的数据库表,然后在原始数据库表名与扩展库表名映射信息表中维护上对应的记录即可。
[0026]所述步骤3中,当用户进行数据新增时,遍历原始数据库表名与扩展库表名映射信息表,以查询最新的分表,然后在新的分表中进行数据的新增;
[0027]当用户进行数据修改时,先通过数据id遍历查询原始数据库表名与扩展库表名映射信息表中的所有表,以找出数据所在的分表,然后再根据数据id进行数据变更;
[0028]当用户进行数据查询时,如果为单表查询:则以入输入参数作为查询条件,遍历原始数据库表名与扩展库表名映射信息表,查询符合结果总数据条数,并根据分页参数计算出各个分表所需要返回的数据,组合结果集后返回即可;
[0029]如果为多表关联查询:先按照输入参数对每个分表进行关联查询,然后统计查询结果总数,再按照分页参数查询各个分表数据组合返回。
[0030]当用户遗忘密码导致无法登录,间接导致对应数据库表无法匹配到对应用户时,
通过前台提供的找回功能来进行数据的找回。
[0031]所述步骤3中,利用找回功能进行数据的找回步骤如下:
[0032]步骤3.1:后台通过用户输入的手机号和对应的手机号验证码信息来进行用户的身份校验,检验通过后利用原始库表中存储的该手机号对应的用户加密密码信息计算出原始库表名称前缀,以及平台为用户提供的所有业务的业务编码,来获取用户所有的原始库表名称后缀,从而计算出用户的所有原始库表名;
[0033]步骤3.2:通过用户输入的新密码作为参数计算出统一的新数据库表名前缀,以及业务编码生成所有的新业务库表名;
[0034]步骤3.3:通过分布式锁的方式限制当前用户的所有业务操作行为,使用sql语句遍历所有原始库表名进行表名的修改;
[0035]步骤3.4:当修改表名操作执行完成后,释放分布式锁,恢复当前用户的新增、变更以及查询操作。
[0036本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SM3国密的数据库表级数据隔离现方法,其特征在于:包括以下步骤:步骤1:利用用户手机号结合密码,通过SM3国密计算生成动态的数据库表名;每个用户的手机号结合密码必然是不相同的,通过国密SM3加密算法后无法进行用户信息反推,在后台代码中也能避免数据库表名操作时的明文拼接,从而保证用户的数据库表信息的安全性;不同用户根据用户信息的不同有不同数据库表,从而使得不同用户的数据之间实现了实质性的数据隔离,适用于多租户的系统形式,也便于运维操作的实施;步骤2:数据查询时,通过用户信息动态计算表名进行sql语句的动态拼接,从而避免用户专有表名的暴露,同时实现了用户之间的数据隔离;步骤3:当数据库表数据量过大时,通过增加后缀的方式实现数据库表的水平拆分,并记录原始数据库表名与扩展库表名的映射关系,以便用户查询与使用。2.根据权利要求1所述的基于SM3国密的数据库表级数据隔离现方法,其特征在于:所述步骤1中,首先用户通过系统进行账号的注册,并在注册后上传用户的基础信息,包括但不限于用户手机号、用户注册名和加密后的注册密码,注册账户成功后进行数据库表的初始化;在后端进行代码开发时,根据单一手机号只能标识单一用户的业务逻辑,利用统一的数据库表名计算出该用户的唯一业务数据库表名前缀;为了区别具体的业务功能表,根据不同的请求对应的不同业务的业务编码来获取所需要的所有数据库表名后缀。3.根据权利要求2所述的基于SM3国密的数据库表级数据隔离现方法,其特征在于:所述步骤1中,在后端进行代码开发时,先通过用户登录时的唯一身份令牌来获取用户的唯一标识并查询用户手机号以及加密密码信息,将用户手机号结合SM3加密后的账号密码再次进行SM3加密,并将加密后的hash字符串作为该用户数据库表名的前缀;利用不同的业务编码标识不同业务,将数据库表名后缀设置为下滑线+业务代码code。4.根据权利要求3所述的基于SM3国密的数据库表级数据隔离现方法,其特征在于:所述步骤2中,系统为该用户所有不同业务所对应的数据库表完成初始化后,数据查通过动态拼接的方式将不同业务的不同数据库表名作为参数传递到具体的sql语句中,来完成业务数据的查询;多表之间的连接查询通过替换不同的业务后缀来实现,从而使得即使从数据库sql语句文件中也无法获知用户的具体数据库表名称,从而实现对用户数据库表的加密。5.根据权利要求3所述的基于SM3国密的数据库表级数据隔离现方法,其特征在于:所述步骤3中,对数据库表进行水平拆分时,步骤如下:步骤3.1:设置数据库表的单表阈值,通过定时任务获取所有原始单表的数据容量,当单表容量到达预设阈值时,通过sql脚本新建以原始数据库表名为基础的分表;步骤3.2:通过在原始数据库表名的基础上加上后缀数字编号作为新表名的方式创建新的数据库表,然后在原始数据库表名与扩展库表名映射信息表中维护上对应的记录即可。6.根据权利要求5所述的基于SM3国密...

【专利技术属性】
技术研发人员:唐榕
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1