一种数据库的加密、解密方法、装置、存储介质及终端与流程

文档序号:15751862发布日期:2018-10-26 17:54阅读:240来源:国知局
一种数据库的加密、解密方法、装置、存储介质及终端与流程

本发明涉及移动通讯领域,特别是涉及一种数据库的加密、解密方法、装置、存储介质及终端。



背景技术:

随着移动终端使用的推广,各种应用程序(app,application)也在丰富着移动终端的功能,以满足用户的各种功能需求。数据库是app文件中重要的组成部分,尤其是针对各中考试类、答题类、评测类app等,对应的数据库中的内容更是需要进行重点保护的对象。

现有移动终端中使用的数据库(如轻量级跨平台关系型数据库sqlite)通常不具备加密功能,数据库字段内容全部为明文显示,无法对进行加密保护。当非法用户对移动终端进行破解并获取移动终端的超级管理员权限时,可通过管理工具导出数据库中所有数据,造成数据泄露,增大了应用程序运行的风险,严重影响了用户的使用安全。



技术实现要素:

本发明提供一种数据库的加密、解密方法、装置、存储介质及终端,用以解决现有技术无法对应用程序数据库进行加密,易造成数据泄露的问题。

为解决上述技术问题,一方面,本发明提供一种数据库的加密方法,应用于终端,包括:基于密钥对数据库的待加密字段进行加密;按照预定混淆方式对所述密钥进行混淆处理,并保存经过混淆处理后的密钥。

进一步,所述保存经过混淆处理后的密钥,包括:将经过混淆处理后的密钥拆分为n个密钥部分,并将所述n个密钥部分分别保存至不同文件中,其中,n为大于或等于2的整数。

进一步,在n等于2的情况下,所述将所述n个密钥部分分别保存至不同文件中,包括:将所述第一部分密钥保存在可读文件的预设位置;将所述第二部分密钥保存在动态链接库二进制文件so符号表中。

进一步,所述按照预定混淆方式对所述密钥进行混淆处理,并保存经过混淆处理后的密钥之后,还包括:将解密算法进行封装,其中,所述解密算法为与加密时采用的加密算法对应的解密算法;隐藏封装后的解密算法的入口函数,将所述入口函数通知具有指定签名的调用者。

另一方面,本发明还提供一种数据库的解密方法,应用于终端,包括:获取按照预定混淆方式进行混淆处理后的密钥;对所述混淆处理后的密钥进行反混淆处理,得到密钥;基于所述密钥对加密后的数据库字段进行解密。

进一步,所述获取按照预定混淆方式进行混淆处理后的密钥,包括:从不同的文件中分别获取n个密钥部分,其中,n为大于或等于2的整数;根据所述n个密钥部分得到混淆处理后的密钥。

进一步,所述获取按照预定混淆方式进行混淆处理后的密钥之前,还包括:对调用者的签名进行校验,在所述调用者的签名通过校验的情况下,获取封装后的解密算法;对所述封装后的解密算法进行解封,得到解密算法,其中,所述解密算法为与加密时采用的加密算法对应的解密算法。

另一方面,本发明还提供一种数据库的加密装置,包括:加密模块,用于基于密钥对数据库的待加密字段进行加密;混淆模块,用于按照预定混淆方式对所述密钥进行混淆处理,并保存经过混淆后的密钥。

进一步,所述混淆模块,具体用于:将经过混淆后的密钥拆分为n个密钥部分,并将所述n个密钥部分分别保存至不同文件中,其中,n为大于或等于2的整数。

进一步,在n等于2的情况下,所述混淆模块,具体用于:将所述第一部分密钥保存在可读文件的预设位置;将所述第二部分密钥保存在动态链接库二进制文件so符号表中。

进一步,还包括:封装模块,用于将解密算法进行封装,其中,所述解密算法为与加密时采用的加密算法对应的解密算法;隐藏模块,用于隐藏封装后的解密算法的入口函数,将所述入口函数通知具有指定签名的调用者。

另一方面,本发明还提供数据库的解密装置,包括:获取模块,用于获取按照预定混淆方式进行混淆处理后的密钥;反混淆模块,用于对所述混淆处理后的密钥进行反混淆处理,得到密钥;解密模块,用于基于所述密钥对加密后的数据库字段进行解密。

进一步,所述获取模块,具体用于:从不同的文件中分别获取n个密钥部分,其中,n为大于或等于2的整数;根据所述n个密钥部分得到混淆处理后的密钥。

进一步,其特征在于,还包括:校验模块,用于对调用者的签名进行校验,在所述调用者的签名通过校验的情况下,获取封装后的解密算法;解封模块,用于对封装后的解密算法进行解封,得到解密算法,其中,所述解密算法为与加密时采用的加密算法对应的解密算法。

另一方面,本发明还提供一种存储介质,存储有计算机程序,其特征在于,计算机程序被处理器执行时实现上述的数据库的加密方法的步骤。

另一方面,本发明还提供一种存储介质,存储有计算机程序,其特征在于,计算机程序被处理器执行时实现上述的数据库的解密方法的步骤。

另一方面,本发明还提供一种终端,至少包括存储器、处理器,存储器上存储有计算机程序,处理器在执行存储器上的计算机程序时实现上述的数据库的加密方法的步骤。

另一方面,本发明还提供一种终端,至少包括存储器、处理器,存储器上存储有计算机程序,处理器在执行存储器上的计算机程序时实现上述的数据库的解密方法的步骤。

本发明通过对数据库的字段进行加密,并对密钥进行混淆处理,使非法用户即便对移动终端进行破解并获取数据库内容,也因为无法获取正确的密钥,无法对加密后的数据库字段内容进行解密,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

附图说明

图1是本发明第一实施例中数据库的加密方法流程图;

图2是本发明第二实施例中数据库的加密方法流程图;

图3是本发明第三实施例中数据库的加密方法流程图;

图4是本发明第四实施例中数据库的解密方法流程图;

图5是本发明第五实施例中数据库的解密方法流程图;

图6是本发明第六实施例中数据库的解密方法流程图;

图7是本发明第七实施例中数据库的加密装置的结构示意图;

图8是本发明第八实施例中数据库的加密装置的结构示意图;

图9是本发明第九实施例中数据库的解密装置的结构示意图;

图10是本发明第十实施例中数据库的解密装置的结构示意图。

具体实施方式

为了解决现有技术无法对应用程序数据库进行加密,易造成数据泄露的问题,本发明提供了一种数据库的加密、解密方法、装置、存储介质及终端,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。

本发明的第一实施例提供了一种数据库的加密方法,该方法应用于终端,其流程图如图1所示,主要包括步骤s101和s102:

s101,基于密钥对数据库的待加密字段进行加密。

现有技术中应用程序对应的数据库中保存的字段内容均为明文显示,当移动终端被破解,非法用户可轻易获取到数据库中的明文内容,造成数据库内容泄露。

在本实施例中,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,并将加密后的数据库内置在对应的应用程序中。通过上述方式,使非法用户即使可以通过破解移动终端获取数据库文件,也无法获取到以明文形式显现的字段内容,起到了保护数据库内容的作用。

具体地,数据库的待加密字段可以为数据库中主要的核心字段,如编号、主体、具体内容等字段,也可以根据数据库对应的应用程序的类型,设置不同的待加密字段,如对于通讯录,待加密字段可设置为联系人名称和联系方式,对于答题类app,待加密字段可设置为题目内容、选项内容和正确答案,对于需要进行用户登录的app,待加密字段可设置为用户名、密码等字段。针对不同的数据库设置不同的待加密字段,可无需对数据库中所有字段均进行加密,又可起到对重要字段进行保护的作用。

在对数据库的待加密字段进行加密时,加密算法可以但不限于高级加密标准算法(aes,advancedencryptionstandard),在使用aes算法时,还可进一步使用加密级别较高的密文分组链接方式(cbc,cipherblockchaining)进行加密,以进一步降低密文被破解的可能性。

s102,按照预定混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。

为了进一步保证数据库内容的安全,在对数据库字段内容进行加密后,按照预定的混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。具体地,密钥通常为一定长度的字符串,预定的混淆方式可以但不限于以下几种方式:在密钥的字符串中间隔预定数量字符的位置增加一个预设字符,且预设字符已知;将密钥的字符串中相同的某个字符全部替换为预设字符;将字符进行顺序调整等。

本实施例通过对数据库的字段进行加密,并对密钥进行混淆处理,使非法用户即便对移动终端进行破解并获取数据库内容,也因为无法获取正确的密钥,无法对加密后的数据库字段内容进行解密,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

本发明的第二实施例提供了一种数据库加密算法,应用于终端,其流程图如图2所示,主要包括步骤s201至s203:

s201,基于密钥对数据库的待加密字段进行加密。

在本实施例中,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,并将加密后的数据库内置在对应的应用程序中。通过上述方式,使非法用户即使可以通过破解移动终端获取数据库文件,也无法获取到以明文形式显现的字段内容,起到了保护数据库内容的作用。

具体地,数据库的待加密字段可以为数据库中主要的核心字段,如编号、主体、具体内容等字段,也可以根据数据库对应的应用程序的类型,设置不同的待加密字段。针对不同的数据库设置不同的待加密字段,可无需对数据库中所有字段均进行加密,又可起到对重要字段进行保护的作用。

在对数据库的待加密字段进行加密时,加密算法可以但不限于aes算法,在使用aes算法是,还可进一步使用加密级别较高的cbc模式进行加密,以进一步降低密文被破解的可能性。

s202,按照预定混淆方式对密钥进行混淆处理。

为了进一步保证数据库内容的安全,在对数据库字段内容进行加密后,按照预定的混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。具体地,密钥通常为一定长度的字符串,预定的混淆方式可以但不限于以下几种方式:在密钥的字符串中间隔预定数量字符的位置增加一个预设字符,且预设字符已知;将密钥的字符串中间隔预定数量字符的位置的字符替换为预设字符;将密钥的字符串进行顺序调整等。

s203,将经过混淆处理后的密钥拆分为n个密钥部分,并将n个密钥部分分别保存至不同文件中,其中,n为大于或等于2的整数。

在密钥经过混淆处理后,为了进一步增加密钥的安全性,将经过混淆处理后的密钥拆分成n个密钥部分并分别保存。具体地,在进行拆分时,可以但不限于以下拆分方式:按照经过混淆处理后的密钥的字符串长度,将其均分为n个部分;将每个字符串的位置与n进行取模运算,将模值相同的位置对应的字符组成一个密钥部分。

拆分后,将各个部分分别进行保存,具体保存的位置可以为app中的可读文件(如图片、txt格式文本等),动态链接库二进制(so,sharedobject)文件等app可直接调用的文件。进一步地,以n为2的情况来说,经过混淆处理的密钥被拆分为第一部分密钥和第二部分密钥,在进行保存时,可将第一部分密钥保存在可读文件的预设位置上,预设位置可以为txt格式文本中预定行数,即将第一部分密钥添加至预定行数之后,预设位置还可以为图片中预定的像素块,即将第一部分密钥中的每个字符分别添加至自预定像素块起以第一部分密钥为长度的连续的像素块中;对于第二部分密钥,可将第二部分密钥保存至so符号表中,其中,so符号表为so文件中的一部分,用于保存与动态链接相关的导入导出符号,在保存第二部分密钥时,可将第二部分密钥作为so符号表中的一项进行保存,可选地,还可以在so符号表中添加隐藏字段对so符号表进行隐藏操作,进一步保证混淆后密钥的安全。

在n大于2时,可以将各个密钥部分分别保存在不同的可读文件中,或保存在so符号表的不同位置中,或保存在app可读的其他文件中,具体保存规则的设置可以根据实际情况进行灵活调整,详细的保存方案可作为解密算法的一部分,在解密时可以被app知悉以完成正确的调用,或者在开发时预先设置好一种保存方式,app在调用时可根据该方式获取到各个部分密钥。

本实施例通过对数据库的字段进行加密,并对密钥进行混淆处理,将混淆处理后的密钥拆分并分别保存,极大增加了密钥的破解难度,进而更好地起到保护数据库数据的效果。

本发明的第三实施例提供了一种数据库加密算法,应用于终端,其流程图如图3所示,主要包括步骤s301至s304:

s301,基于密钥对数据库的待加密字段进行加密。

在本实施例中,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,并将加密后的数据库内置在对应的应用程序中。通过上述方式,使非法用户即使可以通过破解移动终端获取数据库文件,也无法获取到以明文形式显现的字段内容,起到了保护数据库内容的作用。

具体地,数据库的待加密字段可以为数据库中主要的核心字段,如编号、主体、具体内容等字段,也可以根据数据库对应的应用程序的类型,设置不同的待加密字段,如对于通讯录,待加密字段可设置为联系人名称和联系方式,对于答题类app,待加密字段可设置为题目内容、选项内容和正确答案,对于需要进行用户登录的app,待加密字段可设置为用户名、密码等字段。针对不同的数据库设置不同的待加密字段,可无需对数据库中所有字段均进行加密,又可起到对重要字段进行保护的作用。

在对数据库的待加密字段进行加密时,加密算法可以但不限于aes算法,在使用aes算法是,还可进一步使用加密级别较高的cbc模式进行加密,以进一步降低密文被破解的可能性。

s302,按照预定混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。

为了进一步保证数据库内容的安全,在对数据库字段内容进行加密后,按照预定的混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。具体地,密钥通常为一定长度的字符串,预定的混淆方式可以但不限于以下几种方式:在密钥的字符串中间隔预定数量字符的位置增加一个预设字符,且预设字符已知;将密钥的字符串中间隔预定数量字符的位置的字符替换为预设字符;将预设位置的字符进行顺序调整等。

s303,将解密算法进行封装。

为了对解密算法进行保护,可将解密算法进行封装,隐藏其具体的解密方式和过程,仅保留其对外的入口函数,并在需要调用解密算法时,通过入口函数获取封装后的解密算法。具体地,解密算法为加密时采用的加密算法对应的解密算法,还可以包括对密钥进行混淆处理时的预定混淆方式,或包括拆分后的各个部分密钥的保存方案。

s304,隐藏封装后的解密算法的入口函数,将入口函数通知具有指定签名的调用者。

为了保证封装后的解密算法不会被非法用户通过反编译工具获取,在将解密算法封装后,将其对外的入口函数进行隐藏,具体的隐藏方式可以为添加隐藏字段、或通过隐藏工具隐藏等。为了保证用户在使用app时可正常调用封装后的解密算法,app作为调用者应当知晓入口函数的调用方法,因此,在封装解密算法后,将封装后的解密算法的入口函数通知具有指定签名的调用者,具有指定签名的调用者即为数据库对应的app。

本实施例通过对数据库的字段进行加密,并对密钥进行混淆处理,最后对解密算法进行封装和隐藏,增加了密文的破解难度,进而更好地起到保护数据库数据的效果。

本发明的第四实施例提供了一种数据库的解密方法,该方法应用于终端,其流程图如图4所示,主要包括步骤s401至s403:

s401,获取按照预定混淆方式进行混淆处理后的密钥。

s402,对混淆处理后的密钥进行反混淆处理,得到密钥。

在调用数据库,并希望获得数据库中的明文内容时,由于数据库加密,需要根据密钥进行对应的解密操作,因此,需要先获取密钥。在加密时,为保证数据库内容安全,在对数据库字段内容进行加密后,对密钥进行了混淆处理并保存,因此在解密时,首先获取按照预定混淆方式进行混淆处理后的密钥。

在获取混淆处理后的密钥后,对混淆处理后的密钥进行反混淆处理。具体地,反混淆处理与混淆处理相对应,可以但不限于以下方式:在混淆处理后的密钥的字符串中间隔预定数量字符的位置删除预设字符;将混淆处理后的密钥的字符串中的预设字符全部替换为原字符;将字符顺序调整回原顺序。

s403,基于密钥对加密后的数据库字段进行解密。

在本实施例中,在加密时,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,在解密时,则基于密钥对数据库的加密字段进行解密,即将数据库中的二进制流的密文解密成明文,具体解密的方式为使用与加密是对应的解密算法进行解密。可选地,加密算法可以为aes算法,对应的解密算法也应当为aes算法对应的解密算法。

本实施例首先获取混淆处理后的密钥,并对其进行反混淆处理后,得到加密时使用的密钥,再对数据库的加密字段进行解密操作,保证只有获取到正确的密钥后才能对数据库进行解密,使非法用户无法获取数据库的明文内容,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

本发明的第五实施例提供了一种数据库的解密方法,该方法应用于终端,其流程图如图5所示,具体包括步骤s501至s504:

s501,从不同的文件中分别获取n个密钥部分,其中,n为大于或等于2的整数。

s502,根据n个密钥部分得到混淆处理后的密钥。

在加密时,为保证数据库内容安全,在对数据库字段内容进行加密后,对密钥进行了混淆处理并保存,为了进一步增加密钥的安全性,将经过混淆处理后的密钥拆分成n个密钥部分并分别保存。因此在解密时,首先获取需要获取保存在不同文件中的n个密钥部分,上述n个密钥部分保存的位置可以为app中的可读文件或so文件等app可直接调用的文件。

调用者在获取到全部密钥部分后,根据加密时拆分方式对应的组合方式,将n个密钥部分组合成混淆处理后的密钥。

s503,对混淆处理后的密钥进行反混淆处理,得到密钥。

在获取混淆处理后的密钥后,对混淆处理后的密钥进行反混淆处理。具体地,反混淆处理与混淆处理相对应,可以但不限于以下方式:在混淆处理后的密钥的字符串中间隔预定数量字符的位置删除预设字符;将混淆处理后的密钥的字符串中的预设字符全部替换为原字符;将字符顺序调整回原顺序。

s504,基于密钥对加密后的数据库字段进行解密。

在本实施例中,在加密时,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,在解密时,则基于密钥对数据库的加密字段进行解密,即将数据库中的二进制流的密文解密成明文,具体解密的方式为使用与加密是对应的解密算法进行解密。

应当了解的是,对混淆处理后的密钥进行拆分保存的保存方案可以为开发时预先设置好的保存方式,调用者可直接根据该方式获取到各个部分密钥,也可以根据实际情况进行灵活调整,将详细的保存方案作为解密算法的一部分,在解密时可以被app知悉以完成正确的调用。

本实施例首先获取保存在不同文件中的密钥部分,组合成混淆处理后的密钥,在对其进行反混淆处理后,得到加密时使用的密钥,再对数据库的加密字段进行解密操作,保证只有获取到正确的密钥后才能对数据库进行解密,使非法用户无法获取数据库的明文内容,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

本发明的第六实施例提供了一种数据库的解密方法,该方法应用于终端,其流程图如图6所示,具体包括步骤s601至s605:

s601,对调用者的签名进行校验,在调用者的签名通过校验的情况下,获取封装后的解密算法。

在本实施例中,封装后的解密文件的入口函数被隐藏,只有具有指定签名的调用者才知晓封装后的解密算法的入口函数,因此,在进行解密时,首先需要对调用者的签名进行校验,只有在调用者的签名与指定签名相同时,才可获取到封装后的解密算法。

s602,对封装后的解密算法进行解封,得到解密算法。

解密算法为加密时采用的加密算法对应的解密算法,为了对解密算法进行保护,加密之后对解密算法进行了封装,以隐藏其具体的解密方式和过程。在解密时,获取到封装后的解密算法之后,对其进行解封操作,以得到解密算法。具体地,解密算法中包括对密钥进行混淆处理时的预定混淆方式,或包括拆分后的各个部分密钥的保存方案等。

s603,获取按照预定混淆方式进行混淆处理后的密钥。

s604,对混淆处理后的密钥进行反混淆处理,得到密钥。

在调用数据库,并希望获得数据库中的明文内容时,由于数据库加密,需要根据密钥进行对应的解密操作,因此,需要先获取密钥。在加密时,为保证数据库内容安全,在对数据库字段内容进行加密后,对密钥进行了混淆处理并保存,因此在解密时,可通过解密算法中包括的拆分后的各个部分密钥的保存方案获取按照预定混淆方式进行混淆处理后的密钥。

在获取混淆处理后的密钥后,对混淆处理后的密钥进行反混淆处理。具体地,反混淆处理与混淆处理相对应,可以但不限于以下方式:在混淆处理后的密钥的字符串中间隔预定数量字符的位置删除预设字符;将混淆处理后的密钥的字符串中的预设字符全部替换为原字符;将字符顺序调整回原顺序。

s605,基于密钥对加密后的数据库字段进行解密。

在本实施例中,在加密时,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,在解密时,则基于密钥对数据库的加密字段进行解密,即将数据库中的二进制流的密文解密成明文,具体解密的方式为使用与加密是对应的解密算法进行解密,即步骤s602中获取到的解密算法。

本实施例首先对调用者的身份进行校验,获取到解封后的解密算法,并获取混淆处理后的密钥,在对其进行反混淆处理后,得到加密时使用的密钥,再根据解密算法进行解密操作,使非法用户无法获取正确的解密算法,进而无法得到数据库的明文内容,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

本发明的第七实施例提供了一种数据库的加密装置,其结构示意图如图7所示,主要包括:加密模块11,用于基于密钥对数据库的待加密字段进行加密;混淆模块12,与加密模块11耦合,用于按照预定混淆方式对密钥进行混淆处理,并保存经过混淆后的密钥。

现有技术中应用程序对应的数据库中保存的字段内容均为明文显示,当移动终端被破解,非法用户可轻易获取到数据库中的明文内容,造成数据库内容泄露。

在本实施例中,加密模块11首先基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,并将加密后的数据库内置在对应的应用程序中。通过上述方式,使非法用户即使可以通过破解移动终端获取数据库文件,也无法获取到以明文形式显现的字段内容,起到了保护数据库内容的作用。

具体地,数据库的待加密字段可以为数据库中主要的核心字段,如编号、主体、具体内容等字段,也可以根据数据库对应的应用程序的类型,设置不同的待加密字段。针对不同的数据库设置不同的待加密字段,可无需对数据库中所有字段均进行加密,又可起到对重要字段进行保护的作用。

在对数据库的待加密字段进行加密时,加密算法可以但不限于aes算法,在使用aes算法时,还可进一步使用加密级别较高的cbc模式进行加密,以进一步降低密文被破解的可能性。

为了进一步保证数据库内容的安全,在对数据库字段内容进行加密后,混淆模块12按照预定的混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。具体地,密钥通常为一定长度的字符串,混淆模块12使用的预定的混淆方式可以但不限于以下几种方式:在密钥的字符串中间隔预定数量字符的位置增加一个预设字符,且预设字符已知;将密钥的字符串中间隔预定数量字符的位置的字符替换为预设字符;将密钥的字符串进行顺序调整等。

在密钥经过混淆处理后,为了进一步增加密钥的安全性,混淆模块12还可以将经过混淆处理后的密钥拆分成n个密钥部分并分别保存。具体地,混淆模块12在进行拆分时,可以但不限于以下拆分方式:按照经过混淆处理后的密钥的字符串长度,将其均分为n个部分;将每个字符串的位置与n进行取模运算,将模值相同的位置对应的字符组成一个密钥部分。

拆分后,混淆模块12将各个部分分别进行保存,具体保存的位置可以为app中的可读文件(如图片、txt格式文本等),so文件等app可直接调用的文件。进一步地,以n为2的情况来说,经过混淆处理的密钥被拆分为第一部分密钥和第二部分密钥,在进行保存时,混淆模块12可将第一部分密钥保存在可读文件的预设位置上,预设位置可以为txt格式文本中预定行数,即将第一部分密钥添加至预定行数之后,预设位置还可以为图片中预定的像素块,即将第一部分密钥中的每个字符分别添加至自预定像素块起以第一部分密钥为长度的连续的像素块中;对于第二部分密钥,混淆模块12可将第二部分密钥保存至so符号表中,将第二部分密钥作为so符号表中的一项进行保存,可选地,还可以在so符号表中添加隐藏字段对so符号表进行隐藏操作,进一步保证混淆后密钥的安全。

在n大于2时,混淆模块12可以将各个密钥部分分别保存在不同的可读文件中,或保存在so符号表的不同位置中,或保存在app可读的其他文件中,具体保存规则的设置可以根据实际情况进行灵活调整,详细的保存方案可作为解密算法的一部分,在解密时可以被app知悉以完成正确的调用,或者在开发时预先设置好一种保存方式,app在调用时可根据该方式获取到各个部分密钥。

本实施例通过对数据库的字段进行加密,并对密钥进行混淆处理,将混淆处理后的密钥拆分并分别保存,极大增加了密钥的破解难度,进而更好地起到保护数据库数据的效果。

本发明的第八实施例提供了一种数据库的加密装置,其结构示意图如图8所示,主要包括:加密模块11,用于基于密钥对数据库的待加密字段进行加密;混淆模块12,与加密模块11耦合,用于按照预定混淆方式对密钥进行混淆处理,并保存经过混淆后的密钥;封装模块13,与混淆模块12耦合,用于将解密算法进行封装,其中,解密算法为与加密时采用的加密算法对应的解密算法;隐藏模块14,与封装模块13耦合,用于隐藏封装后的解密算法的入口函数,将入口函数通知具有指定签名的调用者。

在本发明的第七实施例中已经对加密模块11和混淆模块12进行了详细描述,在本实施例中不再赘述。

为了对解密算法进行保护,可通过封装模块13将解密算法进行封装,隐藏其具体的解密方式和过程,仅保留其对外的入口函数,并在需要调用解密算法时,通过入口函数获取封装后的解密算法。具体地,解密算法为加密时采用的加密算法对应的解密算法,还可以包括对密钥进行混淆处理时的预定混淆方式,或包括拆分后的各个部分密钥的保存方案。

为了保证封装后的解密算法不会被非法用户通过反编译工具获取,在将解密算法封装后,通过隐藏模块14将其对外的入口函数进行隐藏,具体的隐藏方式可以为添加隐藏字段、或通过隐藏工具隐藏等。为了保证用户在使用app时可正常调用封装后的解密算法,app作为调用者应当知晓入口函数的调用方法,因此,在封装解密算法后,隐藏模块14将封装后的解密算法的入口函数通知具有指定签名的调用者,具有指定签名的调用者即为数据库对应的app。

本实施例通过对数据库的字段进行加密,并对密钥进行混淆处理,最后对解密算法进行封装和隐藏,增加了密文的破解难度,进而更好地起到保护数据库数据的效果。

本发明的第九实施例提供了一种数据库的解密装置,其结构示意图如图9所示,主要包括:获取模块21,用于获取按照预定混淆方式进行混淆处理后的密钥;反混淆模块22,与获取模块21耦合,用于对混淆处理后的密钥进行反混淆处理,得到密钥;解密模块23,与反混淆模块22耦合,用于基于密钥对加密后的数据库字段进行解密。

在调用数据库,并希望获得数据库中的明文内容时,由于数据库加密,需要根据密钥进行对应的解密操作,因此,需要先获取密钥。在加密时,为保证数据库内容安全,在对数据库字段内容进行加密后,对密钥进行了混淆处理并保存,因此在解密时,首先通过获取模块21获取按照预定混淆方式进行混淆处理后的密钥。

在加密时,为保证数据库内容安全,在对数据库字段内容进行加密后,对密钥进行了混淆处理并保存,为了进一步增加密钥的安全性,将经过混淆处理后的密钥拆分成n个密钥部分并分别保存。因此在解密时,获取模块21首先获取需要获取保存在不同文件中的n个密钥部分,上述n个密钥部分保存的位置可以为app中的可读文件或so文件等app可直接调用的文件。在获取到全部密钥部分后,根据加密时拆分方式对应的组合方式,将n个密钥部分组合成混淆处理后的密钥。

在获取混淆处理后的密钥后,由反混淆模块22对混淆处理后的密钥进行反混淆处理。具体地,反混淆处理与混淆处理相对应,可以但不限于以下方式:在混淆处理后的密钥的字符串中间隔预定数量字符的位置删除预设字符;将混淆处理后的密钥的字符串中的预设字符全部替换为原字符;将字符顺序调整回原顺序。

在本实施例中,在加密时,基于密钥通过预先设置的加密算法对数据库中的待加密字段进行加密,使待加密字段的内容在数据库中保存的格式为二进制流的密文形式,在解密时,则由解密模块23基于密钥对数据库的加密字段进行解密,即将数据库中的二进制流的密文解密成明文,解密模块23使用的具体解密的方式为使用与加密是对应的解密算法进行解密。可选地,加密算法可以为aes算法,对应的解密算法也应当为aes算法对应的解密算法。

应当了解的是,对混淆处理后的密钥进行拆分保存的保存方案可以为开发时预先设置好的保存方式,获取模块21可直接根据该方式获取到各个部分密钥,也可以根据实际情况进行灵活调整,将详细的保存方案作为解密算法的一部分,在解密时可以被获取模块21知悉以完成正确的调用。

本实施例首先获取混淆处理后的密钥,并对其进行反混淆处理后,得到加密时使用的密钥,再对数据库的加密字段进行解密操作,保证只有获取到正确的密钥后才能对数据库进行解密,使非法用户无法获取数据库的明文内容,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

本发明的第十实施例提供了一种数据库的解密装置,其结构示意图如图9所示,主要包括:校验模块24,用于对调用者的签名进行校验,在调用者的签名通过校验的情况下,获取封装后的解密算法;解封模块25,与校验模块24耦合,用于对封装后的解密算法进行解封,得到解密算法,其中,解密算法为与加密时采用的加密算法对应的解密算法;获取模块21,与解封模块25耦合,用于获取按照预定混淆方式进行混淆处理后的密钥;反混淆模块22,与获取模块21耦合,用于对混淆处理后的密钥进行反混淆处理,得到密钥;解密模块23,与反混淆模块22耦合,用于基于密钥对加密后的数据库字段进行解密。

在本发明的第九实施例中已经对获取模块21、反混淆模块22和解密模块23进行了详细描述,在本实施例中不再赘述。

在本实施例中,封装后的解密文件的入口函数被隐藏,只有具有指定签名的调用者才知晓封装后的解密算法的入口函数,因此,在进行解密时,首先需要通过校验模块24对调用者的签名进行校验,只有在调用者的签名与指定签名相同时,才可获取到封装后的解密算法。

解密算法为加密时采用的加密算法对应的解密算法,为了对解密算法进行保护,加密之后对解密算法进行了封装,以隐藏其具体的解密方式和过程。在解密时,校验模块24获取到封装后的解密算法之后,由解封模块25对其进行解封操作,以得到解密算法。具体地,解密算法中包括对密钥进行混淆处理时的预定混淆方式,或包括拆分后的各个部分密钥的保存方案等。

本实施例首先对调用者的身份进行校验,获取到解封后的解密算法,并获取混淆处理后的密钥,在对其进行反混淆处理后,得到加密时使用的密钥,再根据解密算法进行解密操作,使非法用户无法获取正确的解密算法,进而无法得到数据库的明文内容,从而实现了对数据库内容的保护,降低了应用程序运行的风险,提高了用户的使用安全。

本发明第十一实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤s1和s2:

s1,基于密钥对数据库的待加密字段进行加密;

s2,按照预定混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。

在本实施例中,存储介质可以安装在终端中。由于在第一实施例中已经对数据库的加密方法进行了详细说明,因此,在本实施例中不再赘述。

本发明第十二实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤s3至s5:

s3,获取按照预定混淆方式进行混淆处理后的密钥;

s4,对混淆处理后的密钥进行反混淆处理,得到密钥;

s5,基于密钥对加密后的数据库字段进行解密。

在本实施例中,存储介质可以安装在终端中。由于在第四实施例中已经对数据库的解密方法进行了详细说明,因此,在本实施例中不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

本发明的第十三实施例提供了一种终端,至少包括存储器、处理器,存储器上存储有计算机程序,处理器在执行存储器上的计算机程序时实现如下步骤s6和s7:

s6,基于密钥对数据库的待加密字段进行加密;

s7,按照预定混淆方式对密钥进行混淆处理,并保存经过混淆处理后的密钥。

在本实施例中,终端可以为用户使用的智能手机或平板电脑等。由于在第一实施例中已经对数据库的加密方法进行了详细说明,因此,在本实施例中不再赘述。

本发明的第十四实施例提供了一种终端,至少包括存储器、处理器,存储器上存储有计算机程序,处理器在执行存储器上的计算机程序时实现如下步骤s8至s10:

s8,获取按照预定混淆方式进行混淆处理后的密钥;

s9,对混淆处理后的密钥进行反混淆处理,得到密钥;

s10,基于密钥对加密后的数据库字段进行解密。

在本实施例中,终端可以为用户使用的智能手机或平板电脑等。由于在第四实施例中已经对数据库的解密方法进行了详细说明,因此,在本实施例中不再赘述。

尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1