CN103647636B - 安全访问数据的方法及装置 - Google Patents
安全访问数据的方法及装置 Download PDFInfo
- Publication number
- CN103647636B CN103647636B CN201310748951.2A CN201310748951A CN103647636B CN 103647636 B CN103647636 B CN 103647636B CN 201310748951 A CN201310748951 A CN 201310748951A CN 103647636 B CN103647636 B CN 103647636B
- Authority
- CN
- China
- Prior art keywords
- data
- encryption
- class
- encryption data
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种安全访问数据的方法及装置,其中,所述方法包括:对源数据进行加密,将源数据封装为加密数据;将用户访问加密数据使用的数据访问模块封装为加密数据访问接口;在用户访问加密数据时,使用接口加密密钥,通过自定义类加载器加载加密数据访问接口;进而使用数据加密密钥,通过加密数据访问接口获得加密数据。通过本方法可以提供了一种在弱安全环境下对数据安全访问的方法,可以从后端的数据存储到前端的数据访问都给出了一个有效的解决方法;其次,不需要任何加密设备投入,能有效控制成本;第三,用户使用高效、便利、安全,学习成本低,使用简单。
Description
技术领域
本发明涉及数据安全领域,特别地,涉及安全访问数据的方法及装置。
背景技术
数据在录入、传输、处理、统计以及打印的过程中,可能由于硬件故障、断电、死机、误操作、程序缺陷、计算机病毒、黑客攻击等原因而造成的数据丢失或数据泄密,数据安全的任务就是如何有效地防止因类似上述原因造成的数据丢失或这泄密。数据安全具有三个基本特点:
1.保密性,又称机密性,是指确保数据信息不被其他未授权者获得;
2.数据完整性,是指在传输、存储信息或数据的过程中,确保信息或数据不被篡改或在篡改后能够被迅速发现;
3.数据可用性,是一种以使用者为中心的设计概念,设计的重点在于让产品的设计能够符合使用者的习惯与需求。
目前业界保证数据安全访问的方式主要有两种:一是利用密码学知识对数据进行加密处理,如使用链路加密、节点加密、端到端加密等技术,其特点是将一个信息经过加密钥匙及加密函数转换,变成无意义的密文,而接收方则将此密文经过解密函数、解密钥匙等还原成明文;二是依靠硬件加密,硬件加密是通过专用加密芯片或独立的处理芯片等实现密码运算,需要将加密芯片、专有电子钥匙、数据存储设备一一对应使用,加密芯片将把加密芯片信息、专有钥匙信息、硬盘信息进行对应并做加密运算,同时写入硬盘的主分区表,这种实现方式下加密芯片、专有电子钥匙、数据存储设备绑定在一起,缺少任何一个都将无法使用,经过加密后硬盘如果脱离相应的加密芯片和电子钥匙,在计算机上将无法识别,更无法得到任何数据。
上述实现方式有如下缺点:利用密码学知识对数据进行加密处理,密码学中的加密算法虽然能很好的保护数据,但是这种方式多侧重于数据层面,仅仅是在数据端对数据本身进行加密,对整个数据安全访问问题并没有提出一个完整的解决方案;而硬件加密涉及到大量的硬件设备,其成本投入巨大,并且操作复杂,密码设备如果丢失则数据资料很难还原。因此,需要本领域技术人员迫切解决的一个技术问题就是:如何提供一种安全访问数据的方法,能够在有效控制成本的条件下,更加高效便利地实现安全的访问数据。
发明内容
本发明所要解决的技术问题是提供一种安全访问数据的方法及装置,能够在有效控制成本的条件下,更加高效便利地实现安全的访问数据。
为实现上述目的,根据本发明的一个方面,提供了一种一种安全访问数据的方法,包括:
对源数据进行加密,将源数据封装为加密数据;
将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口;
在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口;
使用数据加密密钥,通过所述加密数据访问接口获得加密数据。
可选地,所述对源数据进行加密,将源数据封装为加密数据,包括:
利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储。
可选地,所述利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储,包括:
获取所述源数据,并利用高级加密标准AES加密算法,或用户自定义加密算法对源数据进行加密;并利用消息摘要算法第五版MD5算法,或用户自定义校验算法生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储。
可选地,所述将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口,包括:
将用户访问所述加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口。
可选地,所述将用户访问所述加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口,包括:
读取和加载待加密Jar包,根据后缀名分析待加密Jar包中的类文件;
读取待加密Jar包中的类文件,并写入类字节数组,将待加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
利用预置的加密算法加密所述各个类文件对应的类字节数组;所述预置的加密算法包括高级加密标准AES加密算法,或用户自定义加密算法;
初始化类文件流和Jar包压缩流,将加密后的类字节数组内容写回至类文件流,再将所有得到的类文件流写入至Jar包压缩流,以Jar包形式存储,生成Jar包形式的加密数据访问接口。
可选地,所述在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口,包括:
加载所述加密数据访问接口的加密Jar包,生成对应的压缩文件流,根据后缀名分析加密Jar包中的类文件;
读取加密Jar包中的类文件内容,并写入类字节数组,将加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
接收用户输入的目标类名,并根据所述目标类名查找所述Map集合;
如果所述Map集合中存在所述目标类名,则获取对应的目标类字节数组,并利用所述接口加密密钥对所述目标类字节数组进行解密;
将解密后的目标类字节数组转换为对应的类实例,完成所述目标类名对应的类的加载。
可选地,还包括:
接收用户输入的目标类名,判断已加载的类中是否包含所述目标类名对应的类;若包含则中止该类的重复加载。
可选地,还包括:
在加载所述目标类名对应的类时,类加载器以向上递进的方式尝试将加载任务代理给其父类加载器进行加载;其中,如果父类加载器本身还具有父类加载器,则将加载任务代理给其父类加载器,依次类推,只有当父类加载器不能成功加载该类,此时才会将该类交还给子类加载。
可选地,所述使用数据加密密钥,通过所述加密数据访问接口获得加密数据,包括:
加载Java数据库连接JDBC驱动程序到Java虚拟机,将驱动类的实例注册到驱动管理类中;
提供JDBC连接的统一资源定位符URL;其中所述URL包括连接数据库所需的协议,子协议,以及数据源标识;其中所述协议以字符jdbc开始;所述子协议包括桥连接的驱动程序或数据库管理系统名称;所述数据源标识包括到数据库来源的地址与连接端口;
创建数据库连接,获取数据库连接对象,并传入的连接路径,用户以及密码;
接收用户提交的数据库查询语句,并接收对应的数据结果集中包含的加密数据。
可选地,还包括:
利用预置的校验算法对所述数据结果集中包含的加密数据进行完整性校验;所述预置的校验算法包括消息摘要算法第五版MD5算法,或用户自定义校验算法;
利用预置的解密算法对所述数据结果集中包含的加密数据进行解密处理,获取对应的目标数据。所述预置的解密算法包括AES加密算法,或用户自定义加密算法。
相应的,提供了一种一种安全访问数据的装置,包括:
数据加密模块,用于对源数据进行加密,将源数据封装为加密数据;
接口加密模块,用于将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口;
接口加载模块,用于在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口;
数据获取模块,用于使用数据加密密钥,通过所述加密数据访问接口获得加密数据。
可选地,所述数据加密模块,包括:
数据加密子模块,用于利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储。
可选地,所述数据加密子模块,具体用于:
获取所述源数据,并利用高级加密标准AES加密算法,或用户自定义加密算法对源数据进行加密;并利用消息摘要算法第五版MD5算法,或用户自定义校验算法生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储。
可选地,所述接口加密模块,包括:
接口加密子模块,用于将用户访问所述加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口。
可选地,所述接口加密子模块,具体用于:
读取和加载待加密Jar包,根据后缀名分析待加密Jar包中的类文件;
读取待加密Jar包中的类文件,并写入类字节数组,将待加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
利用预置的加密算法加密所述各个类文件对应的类字节数组;所述预置的加密算法包括高级加密标准AES加密算法,或用户自定义加密算法;
初始化类文件流和Jar包压缩流,将加密后的类字节数组内容写回至类文件流,再将所有得到的类文件流写入至Jar包压缩流,以Jar包形式存储,生成Jar包形式的加密数据访问接口。
可选地,所述接口加载模块,具体用于:
加载所述加密数据访问接口的加密Jar包,生成对应的压缩文件流,根据后缀名分析加密Jar包中的类文件;
读取加密Jar包中的类文件内容,并写入类字节数组,将加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
接收用户输入的目标类名,并根据所述目标类名查找所述Map集合;
如果所述Map集合中存在所述目标类名,则获取对应的目标类字节数组,并利用所述接口加密密钥对所述目标类字节数组进行解密;
将解密后的目标类字节数组转换为对应的类实例,完成所述目标类名对应的类的加载。
可选地,还包括:
重复加载检测单元,用于接收用户输入的目标类名,判断已加载的类中是否包含所述目标类名对应的类;若包含则中止该类的重复加载。
可选地,还包括:
父类委托单元,用于在加载所述目标类名对应的类时,类加载器以向上递进的方式尝试将加载任务代理给其父类加载器进行加载;其中,如果父类加载器本身还具有父类加载器,则将加载任务代理给其父类加载器,依次类推,只有当父类加载器不能成功加载该类,此时才会将该类交还给子类加载。
可选地,所述数据获取模块,具体用于:
加载Java数据库连接JDBC驱动程序到Java虚拟机,将驱动类的实例注册到驱动管理类中;
提供JDBC连接的统一资源定位符URL;其中所述URL包括连接数据库所需的协议,子协议,以及数据源标识;其中所述协议以字符jdbc开始;所述子协议包括桥连接的驱动程序或数据库管理系统名称;所述数据源标识包括到数据库来源的地址与连接端口;
创建数据库连接,获取数据库连接对象,并传入的连接路径,用户以及密码;
接收用户提交的数据库查询语句,并接收对应的数据结果集中包含的加密数据。
可选地,还包括:
完整性校验模块,用于利用预置的校验算法对所述数据结果集中包含的加密数据进行完整性校验;所述预置的校验算法包括消息摘要算法第五版MD5算法,或用户自定义校验算法;
数据解密模块,用于利用预置的解密算法对所述数据结果集中包含的加密数据进行解密处理,获取对应的目标数据。所述预置的解密算法包括AES加密算法,或用户自定义加密算法。
与现有技术相比,上述技术方案中的一个技术方案具有以下优点或有益效果:该方法对源数据进行加密,将源数据封装为加密数据;将用户访问加密数据使用的数据访问模块封装为加密数据访问接口;在用户访问加密数据时,使用接口加密密钥,通过自定义类加载器加载加密数据访问接口;进而使用数据加密密钥,通过加密数据访问接口获得加密数据。通过本方法可以提供了一种在弱安全环境下对数据安全访问的方法,可以从后端的数据存储到前端的数据访问都给出了一个有效的解决方法;其次,不需要任何加密设备投入,能有效控制成本;第三,用户使用高效、便利、安全,学习成本低,使用简单。
附图说明
图1是根据本发明一个实施例的安全访问数据的方法的流程图;
图2是根据本发明一个实施例的源数据加密处理的流程图;
图3是根据本发明一个实施例的数据访问模块封装的流程图;
图4是根据本发明一个实施例的自定义类加载器加载加密数据访问接口的流程图;
图5是根据本发明一个实施例的通过加密数据访问接口获得加密数据的流程图;
图6是根据本发明一个实施例的安全访问数据的装置的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明一种根据本发明实施例的安全访问数据的方法的流程图,如图所示,该方法可以包括以下步骤:
S101:对源数据进行加密,将源数据封装为加密数据;
计算机网络的日益发达,给人们带来便利的同时又带来许多“麻烦”,例如信息泄漏、信息窃取、数据篡改、数据删改增添添、计算机病毒等。首先可以对源数据进行加密,将源数据封装为加密数据,主要目的是解决信息在网络传输时被窃取和篡改问题,利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将加密数据以及所述完整性校验字符串对应存储。例如利用AES算法(或用户自定义加密/解密算法)进行信息加密,并用MD5(或用户自定义加密/解密算法)算法保证信息的完整性。
数据库是按照数据结构来组织、存储和管理数据的仓库,它已经在各大行业和领域得到推广和使用,因此,本发明中源数据和加密后得到的数据都将存储在数据库中。如图2所示,为根据本发明实施例的源数据加密处理的流程图,源数据加密处理的流程可以是:
1) 获取数据:首先从数据库中获取所有源数据,判断是否有数据未被加密,如果有则第2)步,否则结束数据加密流程;
2) 加密:AES是美国国家标准技术研究所旨在取代DES的21世纪的加密标准,其加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个。本发明中默认将采用256比特的密钥对每条源数据进行AES加密处理,同时支持用户自定义加密/解密算法;
3) 生成校验串:为了保证数据的信息完整性,数据加密模块默认采用MD5算法来解决该问题,此时会生成一组MD5字符串,后续用户访问时数据时将利用该串进行MD5校验,同时支持用户自定义加密/解密算法进行串校验;
4) 保存数据:最后将加密后的数据以及对应的校验字符串以<加密数据,校验串>形式存入加密数据库中。
S102:将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口;
在现有技术中,由于数据访问模块并不做任何处理。但数据访问模块中往往包含一些保密信息,例如数据服务器链接地址、服务器用户名、登陆密码、数据访问策略等,可以将用户访问加密数据使用的数据访问模块封装为加密数据访问接口,对数据访问接口中的内容进行保护,防止由于环境弱安全问题,数据访问模块遭人窃取、破译而导致泄密。
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 其具有卓越的通用性、高效性、平台移植性和安全性,并广泛用于各个领域。本发明中实施例中的数据访问模块的开发以Java编程语言开发的数据访问模块为例进行说明。数据访问模块将会以Jar包的形式提交给用户使用。即将访问加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口。
请参见图3,为根据本发明一个实施例的数据访问模块封装的流程图,如图所示,具体在将用户访问加密数据使用的数据访问模块封装为加密数据访问接口可以通过如下步骤进行:
1) 获取Jar包:读取和加载待加密Jar包,首先用户提交Jar包保存路径,此路径可以是Jar包的直接路径,也可以是存放Jar包的文件夹路径,如果以文件夹形式提交,可以以递归遍历的方式找到该文件夹下所有待加密Jar包;
2) 获取类Class字节数组:根据后缀名分析待加密Jar包中的类文件,读取待加密Jar包中的类文件,并写入类字节数组,将待加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存。加载Jar包,生成文件压缩流,分析Jar包中的文件,找到所有以“.class”格式结尾的类文件,并读取类文件内容,写入字节数组,并以<.class类名,字节数组>的Map形式保存;
3) 加密Class字节数组:利用预置的加密算法加密各个类文件对应的类字节数组;预置的加密算法包括高级加密标准AES加密算法,或用户自定义加密算法。和数据加密一样,本模块也可以采用256比特密钥的AES算法对Class字节数组进行加密处理,同时支持用户自定义加密/解密算法;
4)生成加密Jar包:初始化类文件流和Jar包压缩流,将加密后的类字节数组内容写回至类文件流,再将所有得到的类文件流写入至Jar包压缩流,以Jar包形式存储,生成Jar包形式的加密数据访问接口。具体的,可以是初始化.class文件流和Jar包压缩流,将加密后的Class字节数组内容写回至.class文件流,然后再将所有得到的.class文件流写入至Jar包压缩流,最后以Jar包形式存储。
S103:在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口;
由于加密后的数据访问模块无法被默认的运行环境加载,因此该模块的主要目的便是自定义一套类加载器来解决对加密数据访问接口加载问题,使得用户能方便、透明地使用数据访问接口对数据进行访问。以下仍以Java编程语言开发的应用为例进行说明。
如图3所示,为使用接口加密密钥,通过自定义类加载器加载加密数据访问接口的一个示例的应用示意图。虽然在绝大多数情况下,Java运行环境下的Java虚拟机JVM默认提供的类加载器已经可以满足需求,但在本发明实施例中,出于安全性考虑,数据访问模块以加密Jar包的形式提供给用户使用,JVM默认加载器此时可能不能正确地加载该Jar包,因此需要自定义类加载器来解决加密Jar包加载问题。使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口的过程可以是:
加载加密数据访问接口的加密Jar包,生成对应的压缩文件流,根据后缀名分析加密Jar包中的类文件;读取加密Jar包中的类文件内容,并写入类字节数组,将加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;接收用户输入的目标类名,并根据目标类名查找Map集合;如果Map集合中存在目标类名,则获取对应的目标类字节数组,并利用接口加密密钥对目标类字节数组进行解密;将解密后的目标类字节数组转换为对应的类实例,完成目标类名对应的类的加载。在这个过程中,接收用户输入的目标类名后,可以首先判断已加载的类中是否包含目标类名对应的类;若包含则中止该类的重复加载。此外,在加载的过程中,还可以在加载目标类名对应的类时,类加载器以向上递进的方式尝试将加载任务代理给其父类加载器进行加载;其中,如果父类加载器本身还具有父类加载器,则将加载任务代理给其父类加载器,依次类推,只有当父类加载器不能成功加载该类,此时才会将该类交还给子类加载,下面结合图示以及具体应用说明这一过程,如图4所示,为根据本发明实施例的自定义类加载器加载加密数据访问接口的流程图,该过程可以包括以下步骤:
1) 加载.class:加载加密Jar包,生成压缩文件流,分析Jar包中的文件,找到所有以.class格式结尾的类文件,并读取类文件内容,存入字节数组,并以<.class类名,字节数组>的Map形式保存;
2) 是否已经加载:当用户输入要加载类名时,类加载器为了避免类重复加载,模块首先判断该类是否曾经被加载,如果曾被加载过,则直接返回对应的Class类实例,否则进行下一步;
3) 父加载器加载:类加载器在尝试自己去查找某个类的字节代码并定义它时,会先代理给其父类加载器,由父类加载器先去尝试加载这个类,如果父类加载器本身还具有父类加载器,那么同样会代理给其父类加载器,依次类推,只有当父类加载器不能成功加载该类,此时才会将该类交还给子类加载;
4) 查找欲加载的.class是否存在于<.class类名,字节数组>Map集合中,如果存在则进行下一步;
5) 生成Class类实例:获得该类对应的字节数组,由于数据访问模块被256比特密钥的AES算法(或用户自定义的加密/解密算法)加密,因此需要获得对应的密钥进行解密处理,然后再将解密后该类对应的字节数组转换成 Class类实例,此时,类加载过程完成。
S104:使用数据加密密钥,通过所述加密数据访问接口获得加密数据。
在实际应用汇总,源数据以及根据源数据生产的加密数据往往保存在异地服务器中,在本步骤中,可以使用数据加密密钥,通过加密数据访问接口获得加密数据,使用户可以通过互联网方便、有效、透明地读取数据服务器中的内容。在以Java开发的应用中,该过程具体可以是加载Java数据库连接JDBC驱动程序到Java虚拟机,将驱动类的实例注册到驱动管理类中;提供JDBC连接的统一资源定位符URL;其中URL包括连接数据库所需的协议,子协议,以及数据源标识;其中协议以字符jdbc开始;子协议包括桥连接的驱动程序或数据库管理系统名称;数据源标识包括到数据库来源的地址与连接端口;创建数据库连接,获取数据库连接对象,并传入的连接路径,用户以及密码;接收用户提交的数据库查询语句,并接收对应的数据结果集中包含的加密数据。
在获取加密数据后,可以对加密数据进行调用。当然,由于所获得的是加密的数据,要想对数据进行使用,还需要对获得的加密数据进行解密处理,另外,在解密前还可以对获得的数据进行完整性校验,以保证所获得的数据是正确的。利用预置的校验算法对数据结果集中包含的加密数据进行完整性校验,利用预置的解密算法对数据结果集中包含的加密数据进行解密处理,获取对应的目标数据。下面结合图示以及具体应用说明这一过程,如图4所示,为根据本发明实施例的通过加密数据访问接口获得加密数据的流程图,该过程可以包括以下步骤:
1) 加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库驱动到JVM(Java虚拟机),成功加载后,会将驱动类的实例注册到驱动管理类中;
2) 提供JDBC连接的URL:连接URL定义了连接数据库时的协议、子协议、数据源标识。(协议:在JDBC中总是以jdbc开始,子协议:是桥连接的驱动程序或是数据库管理系统名称,数据源标识:标记找到数据库来源的地址与连接端口);
3) 创建数据库的连接:获得数据库连接对象,此时需要传入数据库的连接路径、数据库用户名和密码;
4) 获得、处理数据:接收用户提交的SQL查询语句,此时会获得对应的数据结果集,由于数据事先被数据加密模块加密,因此还需要利用AES密钥(或用户自定义的加密/解密算法密钥)进行解密,并且利用MD5串做MD5校验(或用户自定义的加密/解密算法进行串校验)以保证数据的完整性;
5) 关闭JDBC对象:操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,先关闭记录集,再关闭声明,最后关闭连接对象。
以上对本发明实施例提供的安全访问数据的方法进行了详细的介绍,通过该方法,可以对源数据进行加密,将源数据封装为加密数据;将用户访问加密数据使用的数据访问模块封装为加密数据访问接口;在用户访问加密数据时,使用接口加密密钥,通过自定义类加载器加载加密数据访问接口;进而使用数据加密密钥,通过加密数据访问接口获得加密数据。通过本发明提供了一种在弱安全环境下对数据安全访问的方法,可以从后端的数据存储到前端的数据访问都给出了一个有效的解决方法;其次,不需要任何加密设备投入,能有效控制成本;第三,用户使用高效、便利、安全,学习成本低,使用简单,适用于各种弱安全环境。
与本发明实施例提供的安全访问数据的方法相对应,本发明实施例还提供了一种安全访问数据的装置,请参见图6,是根据本发明实施例的安全访问数据的装置的示意图,如图所示,该装置可以包括:
数据加密模块601,用于对源数据进行加密,将源数据封装为加密数据;
接口加密模块602,用于将用户访问加密数据使用的数据访问模块封装为加密数据访问接口;
接口加载模块603,用于在用户访问加密数据时,使用接口加密密钥,通过自定义类加载器加载加密数据访问接口;
数据获取模块604,用于使用数据加密密钥,通过加密数据访问接口获得加密数据。
其中,该安全访问数据的装置的数据加密模块601可以包括:
数据加密子模块,用于利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将加密数据以及完整性校验字符串对应存储。
其中,数据加密子模块具体可以用于:
获取源数据,并利用高级加密标准AES加密算法,或用户自定义加密算法对源数据进行加密;并利用消息摘要算法第五版MD5算法,或用户自定义校验算法生成加密数据的完整性校验字符串,将加密数据以及完整性校验字符串对应存储。
在另一种实现方式下接口加密模块可以包括:
接口加密子模块,用于将用户访问加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口。
其中,接口加密子模块具体可以用于:
读取和加载待加密Jar包,根据后缀名分析待加密Jar包中的类文件;
读取待加密Jar包中的类文件,并写入类字节数组,将待加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
利用预置的加密算法加密各个类文件对应的类字节数组;预置的加密算法包括高级加密标准AES加密算法,或用户自定义加密算法;以及,
初始化类文件流和Jar包压缩流,将加密后的类字节数组内容写回至类文件流,再将所有得到的类文件流写入至Jar包压缩流,以Jar包形式存储,生成Jar包形式的加密数据访问接口。
此外,安全访问数据的装置中的接口加载模块602具体可以用于:
加载加密数据访问接口的加密Jar包,生成对应的压缩文件流,根据后缀名分析加密Jar包中的类文件;
读取加密Jar包中的类文件内容,并写入类字节数组,将加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
接收用户输入的目标类名,并根据目标类名查找Map集合;
如果Map集合中存在目标类名,则获取对应的目标类字节数组,并利用接口加密密钥对目标类字节数组进行解密;
将解密后的目标类字节数组转换为对应的类实例,完成目标类名对应的类的加载。
在又一种实现方式下,安全访问数据的装置还可以包括:
重复加载检测单元,用于接收用户输入的目标类名,判断已加载的类中是否包含目标类名对应的类;若包含则中止该类的重复加载。
此外该安全访问数据的装置还可以包括:
父类委托单元,用于在加载目标类名对应的类时,类加载器以向上递进的方式尝试将加载任务代理给其父类加载器进行加载;其中,如果父类加载器本身还具有父类加载器,则将加载任务代理给其父类加载器,依次类推,只有当父类加载器不能成功加载该类,此时才会将该类交还给子类加载。
再一种实现方式下,该安全访问数据的装置中的数据获取模块604具体可以用于:
加载Java数据库连接JDBC驱动程序到Java虚拟机,将驱动类的实例注册到驱动管理类中;
提供JDBC连接的统一资源定位符URL;其中URL包括连接数据库所需的协议,子协议,以及数据源标识;其中协议以字符jdbc开始;子协议包括桥连接的驱动程序或数据库管理系统名称;数据源标识包括到数据库来源的地址与连接端口;
创建数据库连接,获取数据库连接对象,并传入的连接路径,用户以及密码;
接收用户提交的数据库查询语句,并接收对应的数据结果集中包含的加密数据。
在这种实现方式下,该安全访问数据的装置还可以包括:
完整性校验模块,用于利用预置的校验算法对数据结果集中包含的加密数据进行完整性校验;预置的校验算法包括消息摘要算法第五版MD5算法,或用户自定义校验算法;
数据解密模块,用于利用预置的解密算法对数据结果集中包含的加密数据进行解密处理,获取对应的目标数据。预置的解密算法包括AES加密算法,或用户自定义加密算法。
以上对本发明实施例提供的安全访问数据的装置进行了详细的介绍,通过该装置,可以从后端的数据存储到前端的数据访问都给出了一个有效的解决方法;其次,不需要任何加密设备投入,能有效控制成本,使用高效、便利、安全,学习成本低,使用简单,适用于各种弱安全环境。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其他顺去或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
对于前述的各装置实施例,为了简单描述,故将其都表述为一系列的单元组合,但是本领域的技术人员应该知悉,本发明并不受所描述的单元组合的限制,因为根据本发明,某些单元可以采用其他单元执行;其次,本领域技术人员也应该知悉,上述装置实施例均属于优选实施例,所涉及的单元并不一定是本发明所必须的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种安全访问数据的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种安全访问数据的方法,其特征在于,包括:
对源数据进行加密,将源数据封装为加密数据;
将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口;
在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口;
使用数据加密密钥,通过所述加密数据访问接口获得加密数据;
所述使用数据加密密钥,通过所述加密数据访问接口获得加密数据,包括:
加载Java数据库连接JDBC驱动程序到Java虚拟机,将驱动类的实例注册到驱动管理类中;
提供JDBC连接的统一资源定位符URL;其中所述URL包括连接数据库所需的协议,子协议,以及数据源标识;其中所述协议以字符jdbc开始;所述子协议包括桥连接的驱动程序或数据库管理系统名称;所述数据源标识包括到数据库来源的地址与连接端口;
创建数据库连接,获取数据库连接对象,并传入的连接路径,用户以及密码;
接收用户提交的数据库查询语句,并接收对应的数据结果集中包含的加密数据。
2.根据权利要求1所述的安全访问数据的方法,其特征在于,所述对源数据进行加密,将源数据封装为加密数据,包括:
利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储。
3.根据权利要求2所述的安全访问数据的方法,其特征在于,所述利用特定加密算法对源数据进行加密,并生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储,包括:
获取所述源数据,并利用高级加密标准AES加密算法,或用户自定义加密算法对源数据进行加密;并利用消息摘要算法第五版MD5算法,或用户自定义校验算法生成加密数据的完整性校验字符串,将所述加密数据以及所述完整性校验字符串对应存储。
4.根据权利要求1所述的安全访问数据的方法,其特征在于,所述将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口,包括:
将用户访问所述加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口。
5.根据权利要求4所述的安全访问数据的方法,其特征在于,所述将用户访问所述加密数据使用的数据访问模块封装为Java 归档文件Jar包形式的加密数据访问接口,包括:
读取和加载待加密Jar包,根据后缀名分析待加密Jar包中的类文件;
读取待加密Jar包中的类文件,并写入类字节数组,将待加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
利用预置的加密算法加密所述各个类文件对应的类字节数组;所述预置的加密算法包括高级加密标准AES加密算法,或用户自定义加密算法;
初始化类文件流和Jar包压缩流,将加密后的类字节数组内容写回至类文件流,再将所有得到的类文件流写入至Jar包压缩流,以Jar包形式存储,生成Jar包形式的加密数据访问接口。
6.根据权利要求4所述的安全访问数据的方法,其特征在于,所述在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口,包括:
加载所述加密数据访问接口的加密Jar包,生成对应的压缩文件流,根据后缀名分析加密Jar包中的类文件;
读取加密Jar包中的类文件内容,并写入类字节数组,将加密Jar包中的各个类文件的类名与对应的类字节数组以地图Map集合的形式保存;
接收用户输入的目标类名,并根据所述目标类名查找所述Map集合;
如果所述Map集合中存在所述目标类名,则获取对应的目标类字节数组,并利用所述接口加密密钥对所述目标类字节数组进行解密;
将解密后的目标类字节数组转换为对应的类实例,完成所述目标类名对应的类的加载。
7.根据权利要求6所述的安全访问数据的方法,其特征在于,还包括:
接收用户输入的目标类名,判断已加载的类中是否包含所述目标类名对应的类;若包含则中止该类的重复加载。
8.根据权利要求6所述的安全访问数据的方法,其特征在于,还包括:
在加载所述目标类名对应的类时,类加载器以向上递进的方式尝试将加载任务代理给其父类加载器进行加载;其中,如果父类加载器本身还具有父类加载器,则将加载任务代理给其父类加载器,依次类推,只有当父类加载器不能成功加载该类,此时才会将该类交还给子类加载。
9.根据权利要求8所述的安全访问数据的方法,其特征在于,还包括:
利用预置的校验算法对所述数据结果集中包含的加密数据进行完整性校验;所述预置的校验算法包括消息摘要算法第五版MD5算法,或用户自定义校验算法;
利用预置的解密算法对所述数据结果集中包含的加密数据进行解密处理,获取对应的目标数据,所述预置的解密算法包括AES加密算法,或用户自定义加密算法。
10.一种安全访问数据的装置,其特征在于,包括:
数据加密模块,用于对源数据进行加密,将源数据封装为加密数据;
接口加密模块,用于将用户访问所述加密数据使用的数据访问模块封装为加密数据访问接口;
接口加载模块,用于在用户访问所述加密数据时,使用接口加密密钥,通过自定义类加载器加载所述加密数据访问接口;
数据获取模块,用于使用数据加密密钥,通过所述加密数据访问接口获得加密数据;
所述使用数据加密密钥,通过所述加密数据访问接口获得加密数据,包括:
加载Java数据库连接JDBC驱动程序到Java虚拟机,将驱动类的实例注册到驱动管理类中;
提供JDBC连接的统一资源定位符URL;其中所述URL包括连接数据库所需的协议,子协议,以及数据源标识;其中所述协议以字符jdbc开始;所述子协议包括桥连接的驱动程序或数据库管理系统名称;所述数据源标识包括到数据库来源的地址与连接端口;
创建数据库连接,获取数据库连接对象,并传入的连接路径,用户以及密码;
接收用户提交的数据库查询语句,并接收对应的数据结果集中包含的加密数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310748951.2A CN103647636B (zh) | 2013-12-31 | 2013-12-31 | 安全访问数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310748951.2A CN103647636B (zh) | 2013-12-31 | 2013-12-31 | 安全访问数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103647636A CN103647636A (zh) | 2014-03-19 |
CN103647636B true CN103647636B (zh) | 2016-08-24 |
Family
ID=50252799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310748951.2A Active CN103647636B (zh) | 2013-12-31 | 2013-12-31 | 安全访问数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103647636B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721154B (zh) * | 2014-12-05 | 2020-02-18 | 航天信息股份有限公司 | 一种基于Android平台通讯接口的加密保护方法 |
DE102015114544A1 (de) * | 2015-08-31 | 2017-03-02 | Uniscon Universal Identity Control Gmbh | Verfahren zum sicheren und effizienten Zugriff auf Verbindungsdaten |
CN106934256B (zh) * | 2015-12-29 | 2020-03-06 | 中移(杭州)信息技术有限公司 | 一种企业数据服务器的保护方法及装置 |
CN106909672B (zh) * | 2017-03-01 | 2020-04-24 | 四川艾特赢泰智能科技有限责任公司 | 一种基于wpf技术生成及加载特定项目文件的方法 |
CN107888581A (zh) * | 2017-11-07 | 2018-04-06 | 深圳大学 | 数据传输/接收方法及装置、数据收发系统 |
CN114153521A (zh) | 2019-03-25 | 2022-03-08 | 华为技术有限公司 | 类加载方法和装置 |
CN112069511B (zh) * | 2020-07-28 | 2023-09-05 | 宁波吉利汽车研究开发有限公司 | 数据保护方法、装置、电子控制单元、设备及存储介质 |
CN112115429B (zh) * | 2020-08-25 | 2021-06-25 | 北京基调网络股份有限公司 | 一种Java类加密、解密方法及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639882A (zh) * | 2009-08-28 | 2010-02-03 | 华中科技大学 | 基于存储加密的数据库安全保密系统 |
CN102055759A (zh) * | 2010-06-30 | 2011-05-11 | 北京飞天诚信科技有限公司 | 一种硬件引擎的实现方法 |
CN102098282A (zh) * | 2010-12-02 | 2011-06-15 | 东方口岸科技有限公司 | 数据库的安全加密方法 |
-
2013
- 2013-12-31 CN CN201310748951.2A patent/CN103647636B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639882A (zh) * | 2009-08-28 | 2010-02-03 | 华中科技大学 | 基于存储加密的数据库安全保密系统 |
CN102055759A (zh) * | 2010-06-30 | 2011-05-11 | 北京飞天诚信科技有限公司 | 一种硬件引擎的实现方法 |
CN102098282A (zh) * | 2010-12-02 | 2011-06-15 | 东方口岸科技有限公司 | 数据库的安全加密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103647636A (zh) | 2014-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103647636B (zh) | 安全访问数据的方法及装置 | |
US10013574B2 (en) | Method and apparatus for secure storage and retrieval of encrypted files in public cloud-computing platforms | |
US9825925B2 (en) | Method and apparatus for securing sensitive data in a cloud storage system | |
CN106971121B (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN102075542B (zh) | 一种云计算数据安全支撑平台 | |
US10484352B2 (en) | Data operations using a proxy encryption key | |
CN101587479B (zh) | 面向数据库管理系统内核的数据加解密系统及其方法 | |
US8473740B2 (en) | Method and system for secured management of online XML document services through structure-preserving asymmetric encryption | |
CN104995621A (zh) | 服务器装置、隐匿检索程序、记录介质以及隐匿检索系统 | |
CN103530535A (zh) | 一种Android平台应用程序保护的加脱壳方法 | |
AU2018391625B2 (en) | Re-encrypting data on a hash chain | |
CN103107889A (zh) | 一种可搜索的云计算环境数据加密存储系统和方法 | |
US20140245025A1 (en) | System and method for storing data securely | |
CN110138818B (zh) | 传递参数的方法、网站应用、系统、装置以及服务后端 | |
CN105138924A (zh) | 未登录状态下保存应用操作信息的方法和设备 | |
CN108304733B (zh) | 加密数据搜索方法及可加密搜索的数据存储系统 | |
US11210406B2 (en) | Encrypting system level data structures | |
CN104484628A (zh) | 一种具有加密解密功能的多应用智能卡 | |
Ghosh et al. | A systematic review of digital, cloud and iot forensics | |
US11741248B2 (en) | Data access control using data block level encryption | |
Gahi et al. | Encrypted processes for oblivious data retrieval | |
Suthar et al. | Encryscation: An secure approach for data security using encryption and obfuscation techniques for iaas and daas services in cloud environment | |
US11138319B2 (en) | Light-weight context tracking and repair for preventing integrity and confidentiality violations | |
CN115270180A (zh) | 日志存储、封装方法和装置 | |
Bates et al. | Secure and trustworthy provenance collection for digital forensics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |