本发明属于数据加解密方法技术领域,尤其涉及一种加密方法、解密方法及装置。
背景技术:
现有技术中,敏感数据由应用程序进行加密后存储至数据库中,具体为应用程序使用加密机对敏感数据进行加密,同时敏感数据被使用时在应用程序中解密。
因此,如果敏感数据发生改变,如:加密方式改变、加密算法改变和数据不再敏感等,应用程序需要随之改变,不利于应用程序的开发和维护,易造成数据出现混乱等问题。
技术实现要素:
本发明的目的在于提供一种加密方法、解密方法及装置,以解决因敏感数据发生改变,造成应用程序的开发和维护困难的问题。
为达此目的,本发明采用以下技术方案:
第一方面,本发明实施例提供了一种加密方法,包括以下步骤:
新建数据表,所述数据表中定义有字段,所述字段包括敏感数据字段和非敏感数据字段;
实时检测输入的明文数据是否会改变所述敏感数据字段中的数据;
若是,则拦截所述明文数据;
加密被拦截的所述明文数据,得到密文数据;
存储所述密文数据至所述数据表中。
可选的,所述实时检测输入的明文数据是否会改变所述敏感数据字段中的数据,包括:
预先新建触发器;
所述触发器实时检测输入的明文数据是否会改变所述敏感数据字段中的数据。
可选的,所述拦截所述明文数据,包括:所述触发器拦截所述明文数据;
所述加密被拦截的所述明文数据,得到密文数据,包括:所述触发器调用硬件加密机加密被拦截的所述明文数据,得到密文数据。
可选的,所述所述触发器调用硬件加密机加密被拦截的所述明文数据,得到密文数据,包括:
所述触发器通过调用预先添加的插件调用所述硬件加密机;
所述硬件加密机加密所述明文数据,得到密文数据;
所述硬件加密机将所述密文数据返回给所述触发器。
可选的,所述实时检测输入的明文数据是否会改变所述敏感数据字段中的数据,包括:
实时检测输入的明文数据是否为在所述敏感数据字段中新增数据,或者实时检测输入的明文数据是否为在所述敏感数据字段中更新已有的数据。
可选的,所述实时检测输入的明文数据是否会改变所述敏感数据字段中的数据,之后还包括:
若否,则存储所述明文数据至所述数据表中。
第二方面,本发明实施例提供了一种解密方法,用于解密采用如上所述的加密方法存储至数据表中的密文数据,包括以下步骤:
检测输入的获取数据指令是否涉及所述敏感数据字段中的数据;
若是,则解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据;
新建映射表,所述映射表映射解密后的数据表对应的所述解密数据;
所述获取数据指令指向所述映射表,并获取得到所述解密数据。
可选的,所述解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据,包括:
通过预先添加的插件调用硬件加密机;
所述硬件加密机解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据。
第三方面,本发明实施例提供了一种装置,包括:
第一新建模块,用于新建数据表,所述数据表中定义有字段,所述字段包括敏感数据字段和非敏感数据字段;
第一检测模块,用于实时检测输入的明文数据是否会改变所述敏感数据字段中的数据;
拦截模块,用于当检测到输入的明文数据会改变所述敏感数据字段中的数据时,拦截所述明文数据;
加密模块,用于加密被拦截的所述明文数据,得到密文数据;
存储模块,存储所述密文数据至所述数据表中。
可选的,该装置还包括:第二检测模块,用于检测输入的获取数据指令是否涉及所述敏感数据字段中的数据;
解密模块,用于当检测到输入的获取数据指令涉及所述敏感数据字段中的数据时,解密所述敏感数据字段对应的数据表中的密文数据,得到该数据表的解密数据;
第二新建模块,用于新建映射表,所述映射表映射解密后的数据表对应的所述解密数据;
指向模块,用于所述获取数据指令指向所述映射表,并获取得到所述解密数据。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例提供的一种加密方法、解密方法及装置,在对数据表进行操作时,当检测到为改变敏感数据字段中的数据时,对该明文数据进行加密后在存储,将输入数据和加密数据分别单独进行;当检测到为获取数据表中敏感数据字段中的数据,即密文数据时,先解密该数据表得到解密数据,将解密数据映射为映射表,获取数据指令在映射表中获取解密数据;上述加密方法和解密方法,相对于应用程序,实现了透明加解密;并且可针对特定数据进行加密、实现多个应用程序共享敏感数据字段中的数据功能,而不必重新修改应用程序,解决了现有技术存在的应用程序开发和维护困难的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种加密方法的方法流程图。
图2为本发明实施例提供的一种解密方法的方法流程图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1和2所示,本发明实施例提供了一种一种加密方法,以解决现有技术中,因敏感数据发生改变,造成应用程序的开发和维护困难的问题。
具体的,该加密方法包括以下步骤:
步骤s1,新建数据表,所述数据表中定义有字段,所述字段包括敏感数据字段和非敏感数据字段;
步骤s2,实时检测输入的明文数据是否会改变所述敏感数据字段中的数据;
步骤s3,若是,则拦截所述明文数据;
步骤s4,加密被拦截的所述明文数据,得到密文数据;
步骤s5,存储所述密文数据至所述数据表中。
具体的,在步骤s1中,在服务器端新建数据表,每个数据表中包含有多个字段,字段按照实际要求,分为敏感数据字段和非敏感数据字段。例如,在mysql的数据库中,其中可新建多张数据表,每个数据表中有多个字段。在实际场景中,可定义一张数据表包含多种信息,如身份证号码和性别等信息。可将身份证号码定义为敏感数据字段,而性别定义为非敏感数据字段。
在步骤s2中,可选的,在客户端的应用程序中,输入明文数据,以改变服务器端中的数据表中的数据信息。
在步骤s3中,当输入的明文数据会改变敏感数据字段中的数据时,如改变身份证号码信息,则服务器端拦截所述明文数据。
然后在步骤s4中,服务器端对该明文数据进行加密,得到密文数据。
最后进行步骤s5,将密文数据存储至数据表中,即将密文数据写入数据表中的敏感数据字段中。
在该加密方法中,客户端的应用程序只负责输入明文数据,而由服务器端负责判断明文数据是否为敏感数据字段中的内容,如是,则进行加密。该加密方法,客户端的输入明文数据和服务器端的加密明文数据相互独立,以解决现有技术中,因敏感数据字段中的数据改变,造成的应用程序需要随之改变的问题。
进一步的,在步骤s2中,所述实时检测输入的明文数据是否会改变所述敏感数据字段中的数据,包括:
预先新建触发器;
所述触发器实时检测输入的明文数据是否会改变所述敏感数据字段中的数据。
进一步的,在步骤s3中,所述拦截所述明文数据,包括:所述触发器拦截所述明文数据;
在步骤s4中,所述加密被拦截的所述明文数据,得到密文数据,包括:所述触发器调用硬件加密机加密被拦截的所述明文数据,得到密文数据。
进一步的,所述所述触发器调用硬件加密机加密被拦截的所述明文数据,得到密文数据,包括:
所述触发器通过调用预先添加的插件调用所述硬件加密机;
所述硬件加密机加密所述明文数据,得到密文数据;
所述硬件加密机将所述密文数据返回给所述触发器。
可选的,在本申请的另一实施例中,服务器端中安装有mysql数据库,采用c++语言开发出一插件,用于调用硬件加密机。由于硬件加密机通常不能直接被mysql调用,因此,需要开发出该插件,并将该插件编译成动态库,安装在mysql的插件库中。
因此,服务器端中的触发器,通过mysql的sql语言,调用该插件,从而调用硬件加密机,利用硬件加密机的加密和解密的功能,实现对明文数据的加密和解密。
进一步的,在步骤s2中,所述实时检测输入的明文数据是否会改变所述敏感数据字段中的数据,包括:
实时检测输入的明文数据是否为在所述敏感数据字段中新增数据,或者实时检测输入的明文数据是否为在所述敏感数据字段中更新已有的数据。
进一步的,所述实时检测输入的明文数据是否会改变所述敏感数据字段中的数据,之后还包括:若否,则存储所述明文数据至所述数据表中。在本实施例中,通过该加密方法,可按需加密所需要的明文数据。
本实施例还提供了一种解密方法,用于解密采用如上所述的加密方法存储至数据表中的密文数据。
具体的,该解密方法包括以下步骤:
步骤s6,检测输入的获取数据指令是否涉及所述敏感数据字段中的数据;
步骤s7,若是,则解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据;
步骤s8,新建映射表,所述映射表映射解密后的数据表对应的所述解密数据;
步骤s9,所述获取数据指令指向所述映射表,并获取得到所述解密数据。
在步骤s6中,客户端的应用程序需要调用获取数据表中的内容。因此,服务器端检测其获取数据指令是否涉及敏感数据字段中的数据,即是否涉及密文数据。
若是,则进行步骤s7,服务器端解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据。
然后进行步骤s8,得到映射表,最后进行步骤s9。
本实施例提供的解密方法,当客户端的应用程序获取密文数据时,其实质上是在映射表中获取数据,因此保证了数据表中的数据安全,对应用程序实现透明解密。
综上所述,本发明实施例提供的一种加密方法和解密方法,在对数据表进行操作时,当检测到为改变敏感数据字段中的数据时,对该明文数据进行加密后在存储,将输入数据和加密数据分别单独进行;当检测到为获取数据表中敏感数据字段中的数据,即密文数据时,先解密该数据表得到解密数据,将解密数据映射为映射表,获取数据指令在映射表中获取解密数据;上述加密方法和解密方法,相对于应用程序,实现了透明加解密;并且可针对特定数据进行加密、实现多个应用程序共享敏感数据字段中的数据功能,而不必重新修改应用程序,解决了现有技术存在的应用程序开发和维护困难的问题。
进一步的,所述步骤s7中,所述解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据,包括:
通过预先添加的插件调用硬件加密机;
所述硬件加密机解密所述敏感数据字段对应的所述数据表中的密文数据,得到该数据表的解密数据。
此处实现原理与上述加密方法中的一致,即服务器端通过插件调用硬件加密机,以利于硬件加密机的解密功能实现解密密文数据。
更进一步的,本发明实施例还提供了一种装置,用于实现上述加密方法。
具体的,该装置包括:
第一新建模块,用于新建数据表,所述数据表中定义有字段,所述字段包括敏感数据字段和非敏感数据字段;
第一检测模块,用于实时检测输入的明文数据是否会改变所述敏感数据字段中的数据;
拦截模块,用于当检测到输入的明文数据会改变所述敏感数据字段中的数据时,拦截所述明文数据;
加密模块,用于加密被拦截的所述明文数据,得到密文数据;
存储模块,存储所述密文数据至所述数据表中。
更进一步的,为了实现上述解密方法,该装置还包括:
第二检测模块,用于检测输入的获取数据指令是否涉及所述敏感数据字段中的数据;
解密模块,用于当检测到输入的获取数据指令涉及所述敏感数据字段中的数据时,解密所述敏感数据字段对应的数据表中的密文数据,得到该数据表的解密数据;
第二新建模块,用于新建映射表,所述映射表映射解密后的数据表对应的所述解密数据;
指向模块,用于所述获取数据指令指向所述映射表,并获取得到所述解密数据。
该装置具体如何实现该加密方法和解密方法,由于已经在上述阐述,此处不再赘述。
因此,本发明实施例提供的一种装置,在对数据表进行操作时,当检测到为改变敏感数据字段中的数据时,对该明文数据进行加密后在存储,将输入数据和加密数据分别单独进行;当检测到为获取数据表中敏感数据字段中的数据,即密文数据时,先解密该数据表得到解密数据,将解密数据映射为映射表,获取数据指令在映射表中获取解密数据;上述加密方法和解密方法,相对于应用程序,实现了透明加解密;并且可针对特定数据进行加密、实现多个应用程序共享敏感数据字段中的数据功能,而不必重新修改应用程序,解决了现有技术存在的应用程序开发和维护困难的问题。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。