防止Apk被非授权手机安装的加密、解密方法及装置的制作方法

文档序号:7871321阅读:920来源:国知局
专利名称:防止Apk被非授权手机安装的加密、解密方法及装置的制作方法
技术领域
本发明涉及通信技术领域,更具体地说,涉及一种防止Apk被非授权手机安装的加密、解密方法及装置。
背景技术
随着科技日益发展,智能手机得到越来越普遍的应用。现有的Android手机中,一般采用Android安装包(AndroidPackage, APK)来实现程序的安装,APK是类似SymbianSis或Sisx的文件格式,通过将APK文件直接传到Android模拟器或Android手机中执行即可
安装。 目前Android手机中,防止Apk被非授权设备使用的方法主要有两种1、不直接提供Apk文件的下载地址,在用户成功授权后再给提供给用户真实的下载地址;此方案的缺点是,用户获取授权并下载到Apk文件后,可以将此Apk文件传播给其他非授权用户;2、Apk供所有用户下载,但在使用Apk中的功能之前,需要首先通过授权;此方案的缺点是,开发者接入授权方案的过程非常复杂,对于中小开发者来说,要消耗很大的精力来实现。

发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种防止Apk被非授权手机安装的加密、解密方法及装置。本发明解决其技术问题所采用的技术方案是构造一种防止Apk被非授权手机安装的加密方法,其中,包括以下步骤Aj^SApk 文件,获取其中的 AndroidManifest. xml 文件;B、通过随机算法生成密钥kl,并采用所述密钥kl对所述AndroidManifest. xml文件进行加密,将除去所述AndroidManifest. xml文件后的Apk文件保存为opks文件;C、采用约定的密钥k2对Android客户端提供的客户端标识号与所述密钥kl进行加密,得到密文sfl。本发明所述的加密方法,其中,所述步骤C之前包括步骤CO、获取Android客户端上传的客户端标识号及请求Apk地址的请求信息;Cl、验证请求的Android客户端是否能通过授权,在通过授权后,执行步骤C,否则拒绝请求;在所述步骤C之后还包括步骤D、向所述Android客户端返回加密后的所述AndroidManifest. xml文件、所述opks文件、以及所述密文sfl。本发明所述的加密方法,其中,所述步骤C具体为将Android客户端提供的客户端标识号与所述密钥kl相加生成新的字符串,并采用约定的密钥k2对所述字符串进行加密,得到密文sfl。本发明还提供了一种防止Apk被非授权手机安装的解密方法,其中,包括以下步骤E、获取系统返回的加密后的AndroidManifest. xml文件、opks文件、以及密文sfl ;F、将所述加密后的AndroidManifest. xml文件、opks文件、以及密文sfl合并后产生一个后缀名为opk的文件,并发送给Android安装服务程序;G、所述Android安装服务程序获取所述后缀名为opk的文件路径,读取安装文件;H、所述Android安装服务程序判断所读取到的安装文件是否为opk文件;1、在所读取到的安装文件为opk文件时,根据加密方法反向对opk文件进行解析,得到可用于安装的临时Apk文件。 本发明所述的解密方法,其中,所述步骤I具体包括11、使用约定的密钥k2解密所述密文sfl,得到所述密文sfl中的客户端标识号及所述AndroidManifest. xml文件的解密密钥kl ;12、判断得到的客户端标识号是否与本机标识号匹配;13、如果是,则利用所述密钥kl解密所述AndroidManifest. xml文件,并与opks文件组合为临时的Apk文件。本发明还提供了一种防止Apk被非授权手机安装的加密装置,其中,包括解压模块,用于解压Apk文件,获取其中的AndroidManifest. xml文件;第一加密模块,用于通过随机算法生成密钥kl,并采用所述密钥kl对所述AndroidManifest. xml文件进行加密,将除去所述AndroidManifest. xml文件后的Apk文件保存为opks文件;第二加密模块,用于采用约定的密钥k2对Android客户端提供的客户端标识号与所述密钥kl进行加密,得到密文sfl。本发明所述的加密装置,其中,所述第二加密模块输入端还连接有请求信息获取模块,用于获取Android客户端上传的客户端标识号及请求Apk地址的请求信息;验证模块,用于验证请求的Android客户端是否能通过授权,在通过授权后,启动所述第二加密模块,否则拒绝请求;在所述第二加密模块输出端连接有返回模块,用于向所述Android客户端返回加密后的所述AndroidManifest. xml文件、所述opks文件、以及所述密文sfl。本发明所述的加密装置,其中,所述第二加密模块包括字符串产生单元,用于将Android客户端提供的客户端标识号与所述密钥kl相加生成新的字符串;加密单元,用于采用约定的密钥k2对所述字符串进行加密,得到密文sfl。本发明还提供了一种防止Apk被非授权手机安装的解密装置,其中,包括加密文件获取模块,用于获取系统返回的加密后的AndroidManifest. xml文件、opks文件、以及密文sfl ;合并模块,用于将所述加密后的AndroidManifest. xml文件、opks文件、以及密文sfl合并后产生一个后缀名为opk的文件;发送模块,用于将后缀名为opk的文件发送给安装模块;所述安装模块,用于获取所述后缀名为opk的文件路径,读取安装文件,并判断所读取到的安装文件是否为opk文件,在所读取到的安装文件为opk文件时,根据加密方法反向对opk文件进行解析,得到可用于安装的临时Apk文件。本发明所述的解密装置,其中,所述安装模块包括第一解密单元,用于使用约定的密钥k2解密所述密文sfl,得到所述密文sfl中的客户端标识号及所述AndroidManifest. xml文件的解密密钥kl ;判断单元,用于判断得到的客户端标识号是否与本机标识号匹配;第二解密单元,用于在得到的客户端标识号与本机标识号匹配时,利用所述密钥kl解密所述AndroidManifest. xml文件,并与opks文件组合为临时的Apk文件。本发明的有益效果在于通过采用密钥kl对Apk部分文件进行加密,并对Android客户端提供的客户端标识号与及密钥kl进行进一步加密,Android客户端在安装Apk文件时,先解析得到客户端标识号及密钥kl,等确定解析到的客户端标识号与本机标识号相同时,才利用密钥kl解密xml文件,并将多个文件合并得到可安装的临时Apk文件;这样可使得客户端即使将下载到的Apk文件转发至其他用户安装,也会因为标识号不同而无法成功安装,同时Apk开发者只需上传一个普通的Apk文件即能达到保护的目的,无需繁琐的接入授权方案,大大节省了开发成本。


下面将结合附图及实施例对本发明作进一步说明,附图中
图1是本发明较佳实施例的防止Apk被非授权手机安装的加密方法流程;图2是本发明较佳实施例的防止Apk被非授权手机安装的解密方法流程;图3是图2中解密方法流程图的具体解析步骤流程;图4是本发明较佳实施例的防止Apk被非授权手机安装的加密装置原理框图一;图5是本发明较佳实施例的防止Apk被非授权手机安装的加密装置原理框图二 ;图6是图5中第二加密模块原理框图;图7是本发明较佳实施例的防止Apk被非授权手机安装的解密装置原理框图;图8是图7中安装模块原理框图。
具体实施例方式本发明较佳实施例的防止Apk被非授权手机安装的加密方法流程如图1所示,具体包括以下步骤S1、解压开发者上传的Apk文件,获取其清单文件中的AndroidManifest.xml文件,其中AndroidManifest. xml文件是Android的一个注册表文件,在此文件中可以声明已经定义的权限,因此AndroidManifest. xml文件是位于应用根目录下的每一个应用都需要的文件;S2、通过随机算法生成密钥kl,并采用密钥kl对AndroidManifest.xml文件进行加密,此时Apk文件为不包含Android Manifest, xml的文件,为防止此文件被Android客户端(如=Android手机)误认为是标准的Apk文件,因此将除去AndroidManifest, xml文件后的Apk文件保存为后缀为opks的opks文件;S3、采用约定的密钥k2对Android客户端提供的客户端标识号与密钥kl进行加密,得到密文sfl。这样可使得Android客户端即使将下载到的Apk文件转发至其他用户安装,也会因为标识号不同而无法成功安装,同时Apk开发者只需上传一个普通的Apk文件即能达到保护的目的,无需开发繁琐的接入授权方案,大大节省了开发成本。进一步地,如图1所示,上述步骤S3之前包括步骤S30、获取Android客户端上传的客户端标识号及请求Apk地址的请求信息;S31、验证请求的Android客户端是否能通过授权,在通过授权后,执行步骤S3,否则拒绝请求。在步骤S3之后还包括步骤S4、向Android客户端返回加密后的Android Mani fest, xml文件、opks文件、以及密文sfl。即,当Android客户端(手机)用户发起下载Apk请求之时,服务器系统要求手机用户提供客户端标识号,并检验用户提供的客户端标识号是否能通过授权,在确认通过授权之后,服务器系统将前面生成的opks文件及加密的xml文件返回给客户端;同时,采用约定的密钥k2对Android客户端提供的客户端标识号与密钥kl进行加密,得到密文sfl,并返回给Android客户端。进一步地,上述步骤S3具体为将Android客户端提供的客户端标识号与密钥kl相加生成新的字符串,并采用约定的密钥k2对字符串进行加密,得到密文sfl。其中,密钥k2为Android客户端与服务器系统约定好的密钥,密钥kl可以是按不同算法随机生成的密钥。在本发明的另一实施例中,还提供了一种防止Apk被非授权手机安装的解密方法,其流程如图2所示,包括以下步骤S5、获取系统返回的加密后的AndroidManifest. xml文件、opks文件、以及密文sfl ;S6、将加密后的AndroidManifest. xml文件、opks文件、以及密文sfl合并后,打包产生一个后缀名为opk的文件,并发送给Android安装服务程序,即定制化的系统安装程序;S7、Android安装服务程序获取后缀名为opk的文件路径,读取安装文件;S8、Android安装服务程序判断所读取到的安装文件是否为opk文件;S9、在所读取到的安装文件为opk文件时,根据加密方法反向对opk文件进行解析,得到可用于安装的临时Apk文件。具体地,如图3所示,上述步骤S9具体包括S91、使用约定的密钥k2解密密文sfl,得到密文sfl中的客户端标识号及AndroidManifest. xml文件的解密密钥kl ;S92、判断得到的客户端标识号是否与本机标识号匹配;S93、如果是,则利用密钥kl解密AndroidManifest. xml文件,并与opks文件组合为临时的Apk文件;S94、安装此临时的Apk文件,并在安装完成后删除该Apk文件。S卩,Android客户端的系统安装服务在解析opk包时,使用约定的密钥k2解密密文sfl,并从中获取到密钥kl和客户端标识号,对比此客户端标识号与客户端本机的标识号,如果两个标识号不一致,则表明该应用是从其他设备拷贝,属于非授权用户,因此停止安装服务;相反,如果两个标识号匹配,则使用所获取到的密钥kl对AndroidManifest. xml文件进行解密,将解密后的Android Manifest, xml文件与opks的其他部分文件组合为临时文件并安装,在安装完成后删除临时文件。根据上述描述可知,采用上述加密及解密方法后,用户在获取授权并下载到Apk文件后,无法将此Apk文件传播给其他非授权用户进行安装,且由于是采用了加密方式,开发者不需开发复杂的接入授权方案,节省了开发成本,缩短了开发周期。
在本发明的另一实施例中,还提供了一种防止Apk被非授权手机安装的加密装置,如图4所示,其中包括解压模块10、第一加密模块20和第二加密模块30。其中,解压模块10,用于解压开发者上传的Apk文件,获取其清单文件中的AndroidManifest. xml文件;第一加密模块20,用于通过随机算法生成密钥kl,并采用密钥kl对AndroidManifest.xml文件进行加密,此时Apk文件为不包含AndroidManifest. xml的文件,为防止此文件被Android客户端(如Android手机)误认为是标准的Apk文件,因此将除去AndroidManifest, xml文件后的Apk文件保存为后缀为opks的opks文件;第二加密模块30,用于采用约定的密钥k2对Android客户端提供的客户端标识号与密钥kl进行加密,得到密文sfl。用户解析时,可先通过约定的密钥解析得到客户端标识号和密钥kl,然后判断客户端标识号是否与本机标识号一致,如果一致,则认为属于授权用户,可以继续安装,然后再用密钥kl解密AndroidManifest. xml文件,并与opks文件组合为临时的Apk文件。这样可使得Android客户端即使将下载到的Apk文件转发至其他用户安装,也会因为标识号不同而无法成功安装,同时Apk开发者只需上传一个普通的Apk文件即能达到保护的目的,无需开发繁琐的接入授权方案,大大节省了开发成本。
在进一步的实施例中,如图5所示,上述第二加密模块30的输入端还连接有请求信息获取模块31,用于获取Android客户端上传的客户端标识号及请求Apk地址的请求信息;验证模块32,用于验证请求的Android客户端是否能通过授权,在通过授权后,启动第二加密模块30,否则拒绝请求,防止非授权用户安装;在第二加密模块30输出端连接有返回模块40,用于向Android客户端返回加密后的AndroidManifest. xml文件、opks文件、以及密文sfl。S卩,当Android客户端用户发起下载请求之时,服务器系统要求用户提供客户端标识号,并检验用户提供的客户端标识号是否能通过授权,在确认通过授权之后,服务器系统将前面生成的opks文件及加密的xml文件返回给客户端;同时,采用约定的密钥k2对Android客户端提供的客户端标识号与密钥kl进行加密,得到密文sfl,并返回给Android客户端。在进一步的实施例中,如图6所示,上述第二加密模块30包括字符串产生单元301,用于将Android客户端提供的客户端标识号与密钥kl相加生成新的字符串;加密单元302,用于采用约定的密钥k2对字符串进行加密,得到密文sfl。解密时,只需采用密钥k2解密密文sfl得到字符串,然后区分字符串的不同部分即可得到客户端标识号和密钥kl。在本发明的另一实施例中,还提供了一种防止Apk被非授权手机安装的解密装置,如图7所示,包括加密文件获取模块50、合并模块60、发送模块70和安装模块80。其中,加密文件获取模块50,用于获取系统返回的加密后的AndroidManifest. xml文件、opks文件、以及密文sfl ;合并模块60,用于将加密后的AndroidManifest. xml文件、opks文件、以及密文sfl合并后产生一个后缀名为opk的文件;发送模块70,用于将后缀名为opk的文件发送给安装模块;安装模块80,用于获取后缀名为opk的文件路径,读取安装文件,并判断所读取到的安装文件是否为opk文件,在所读取到的安装文件为opk文件时,根据加密方法反向对opk文件进行解析,得到可用于安装的临时Apk文件。进一步地,如图8所示,上述安装模块80包括第一解密单元81,用于使用约定的密钥k2解密密文sfl,得到密文sfl中的客户端标识号及AndroidManifest. xml文件的解密密钥kl ;判断单元82,用于判断得到的客户端标识号是否与本机标识号匹配;第二解密单元83,用于在得到的客户端标识号与本机标识号匹配时,利用密钥kl解密AndroidManifest. xml 文件,并与opks文件组合为临时的Apk文件。综上,本发明通过采用密钥kl对Apk部分文件进行加密,并对Android客户端提供的客户端标识号与及密钥kl进行进一步加密,Android客户端在安装Apk文件时,先解析得到客户端标识号及密钥kl,等确定解析到的客户端标识号与本机标识号相同时,才利用密钥kl解密xml文件,并将多个文件合并得到可安装的临时Apk文件;这样可使得客户端即使将下载到的Apk文件转发至其他用户安装,也会因为标识号不同而无法成功安装,同时Apk开发者只需上传一个普通的Apk文件即能达到保护的目的,无需繁琐的接入授权方案,大大节省了开发成本。 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
1.一种防止Apk被非授权手机安装的加密方法,其特征在于,包括以下步骤 A、解压Apk文件,获取其中的AndroidManifest.xml文件; B、通过随机算法生成密钥kl,并采用所述密钥kl对所述AndroidManifest.xml文件进行加密,将除去所述AndroidManifest. xml文件后的Apk文件保存为opks文件; C、采用约定的密钥k2对Android客户端提供的客户端标识号与所述密钥kl进行加密,得到密文sfl。
2.根据权利要求1所述的加密方法,其特征在于,所述步骤C之前包括步骤 CO、获取Android客户端上传的客户端标识号及请求Apk地址的请求信息; Cl、验证请求的Android客户端是否能通过授权,在通过授权后,执行步骤C,否则拒绝请求; 在所述步骤C之后还包括步骤 D、向所述Android客户端返回加密后的所述AndroidManifest.xml文件、所述opks文件、以及所述密文sfl。
3.根据权利要求1所述的加密方法,其特征在于,所述步骤C具体为 将Android客户端提供的客户端标识号与所述密钥kl相加生成新的字符串,并采用约定的密钥k2对所述字符串进行加密,得到密文sfl。
4.一种防止Apk被非授权手机安装的解密方法,其特征在于,包括以下步骤 E、获取系统返回的加密后的AndroidManifest.xml文件、opks文件、以及密文sfl ; F、将所述加密后的AndroidManifest.xml文件、opks文件、以及密文sfl合并后产生一个后缀名为opk的文件,并发送给Android安装服务程序; G、所述Android安装服务程序获取所述后缀名为opk的文件路径,读取安装文件; H、所述Android安装服务程序判断所读取到的安装文件是否为opk文件;1、在所读取到的安装文件为opk文件时,根据加密方法反向对opk文件进行解析,得到可用于安装的临时Apk文件。
5.根据权利要求4所述的解密方法,其特征在于,所述步骤I具体包括 11、使用约定的密钥k2解密所述密文Si!,得到所述密文Sfl中的客户端标识号及所述AndroidManifest. xml 文件的解密密钥 kl ; 12、判断得到的客户端标识号是否与本机标识号匹配; 13、如果是,则利用所述密钥kl解密所述AndroidManifest.xml文件,并与opks文件组合为临时的Apk文件。
6.一种防止Apk被非授权手机安装的加密装置,其特征在于,包括 解压模块,用于解压Apk文件,获取其中的AndroidManifest. xml文件; 第一加密模块,用于通过随机算法生成密钥kl,并采用所述密钥kl对所述AndroidManifest. xml文件进行加密,将除去所述AndroidManifest. xml文件后的Apk文件保存为opks文件; 第二加密模块,用于采用约定的密钥k2对Android客户端提供的客户端标识号与所述密钥kl进行加密,得到密文sfl。
7.根据权利要求6所述的加密装置,其特征在于,所述第二加密模块输入端还连接有 请求信息获取模块,用于获取Android客户端上传的客户端标识号及请求Apk地址的请求信息; 验证模块,用于验证请求的Android客户端是否能通过授权,在通过授权后,启动所述第二加密模块,否则拒绝请求; 在所述第二加密模块输出端连接有 返回模块,用于向所述Android客户端返回加密后的所述AndroidManifest. xml文件、所述opks文件、以及所述密文sfl。
8.根据权利要求7所述的加密装置,其特征在于,所述第二加密模块包括 字符串产生单元,用于将Android客户端提供的客户端标识号与所述密钥kl相加生成新的字符串; 加密单元,用于采用约定的密钥k2对所述字符串进行加密,得到密文sfl。
9.一种防止Apk被非授权手机安装的解密装置,其特征在于,包括 加密文件获取模块,用于获取系统返回的加密后的AndroidManifest. xml文件、opks文件、以及密文sfl ; 合并模块,用于将所述加密后的AndroidManifest. xml文件、opks文件、以及密文sfl合并后产生一个后缀名为opk的文件; 发送模块,用于将后缀名为opk的文件发送给安装模块; 所述安装模块,用于获取所述后缀名为opk的文件路径,读取安装文件,并判断所读取到的安装文件是否为opk文件,在所读取到的安装文件为opk文件时,根据加密方法反向对opk文件进行解析,得到可用于安装的临时Apk文件。
10.根据权利要求9所述的解密装置,其特征在于,所述安装模块包括 第一解密单元,用于使用约定的密钥k2解密所述密文sfl,得到所述密文sfl中的客户端标识号及所述AndroidManifest. xml文件的解密密钥kl ; 判断单元,用于判断得到的客户端标识号是否与本机标识号匹配; 第二解密单元,用于在得到的客户端标识号与本机标识号匹配时,利用所述密钥kl解密所述AndroidManifest. xml文件,并与opks文件组合为临时的Apk文件。
全文摘要
本发明涉及一种防止Apk被非授权手机安装的加密、解密方法及装置,其中加密方法包括以下步骤解压Apk文件,获取其中的xml文件;通过随机算法生成密钥k1,并采用密钥k1对xml文件进行加密,将除去xml文件后的Apk文件保存为opks文件;采用约定的密钥k2对Android客户端提供的客户端标识号与密钥k1进行加密,得到密文sf1。这样使得客户端即使将下载到的Apk文件转发至其他用户安装,也会因为标识号不同而无法成功安装,同时Apk开发者只需上传一个普通的Apk文件即能达到保护的目的,无需繁琐的接入授权方案,大大节省了开发成本。
文档编号H04W12/04GK103024734SQ20121059378
公开日2013年4月3日 申请日期2012年12月31日 优先权日2012年12月31日
发明者阳波, 魏伟 申请人:广东欧珀移动通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1