一种软件重用模块的保护方法及装置的制作方法

文档序号:6585016阅读:195来源:国知局
专利名称:一种软件重用模块的保护方法及装置的制作方法
技术领域
本发明属于数字加密技术领域,特别涉及一种软件重用模块的保护方法及装置。
背景技术
软件复用是软件工程中软件开发的基本思想和方法,复用意味着使用已经存在的 成果。在软件开发的过程中,我们发现开发中的大部分内容都是比较成熟的,只有少部分的 工作才是创新性的。成熟的工作我们可以认为是高质量并且可以复用的,通过复用这些成 熟的工作可以提高我们的生产率。将开发中比较成熟的、可以复用的工作进行合理的拆分,形成高内聚、低耦合的模 块,以便在其他的软件开发中使用这些独立的、能够提供完整功能的模块,这些模块被称为 重用模块。将提取出的软件模块不断的添加到重用模块库中,在需要某些重用模块时,直 接从模块库中提取自己需要的重用模块进行类似“积木”的堆积,就可以方便形成常用的软 件。随着计算机软件的迅猛发展,软件模块化将越来越多,许多重用模块将在软件产 品中使用,如何保护这些重用模块不被滥用,在软件重用模块层次上对软件进行保护,目前 还没有相应的解决方案。

发明内容
为了解决现有技术在软件重用模块层次上还没有相应的保护方案的问题,本发明 实施例提供了一种软件重用模块的保护方法,包括根据第一密钥和具有使用重用模块权限的应用程序的标识,利用加密算法生成第 一加密结果,根据第一加密结果生成重用模块注册码,第一密钥为根据重用模块私有密钥 得到密钥;当需要使用重用模块的应用程序运行时,获取重用模块注册码、该应用程序的标 识和重用模块中添加的根据第一密钥得到的重用模块校验码;通过重用模块校验码得到第一密钥,根据第一密钥和应用程序运行时获取的标识 利用加密算法生成第二加密结果;通过重用模块注册码得到第一加密结果,根据第一加密结果和第二加密结果相 同,确定需要使用重用模块的应用程序具有使用重用模块的权限,否则,没有使用权限。同时本发明实施例还提供一种软件重用模块的保护装置,包括第一生成模块用于根据第一密钥和具有使用重用模块权限的应用程序的标识, 利用加密算法生成第一加密结果,根据第一加密结果生成重用模块注册码,第一密钥为根 据重用模块私有密钥得到密钥;获取模块用于当需要使用重用模块的应用程序运行时,获取重用模块注册码、该 应用程序的标识和重用模块中添加的根据第一密钥得到的重用模块校验码;第二生成模块用于通过重用模块校验码得到第一密钥,根据第一密钥和应用程序运行时获取的标识利用加密算法生成第二加密结果;权限确定模块用于通过重用模块注册码得到第一加密结果,根据第一加密结果 和第二加密结果相同,确定需要使用重用模块的应用程序具有使用重用模块的权限,否则, 没有使用权限。由本发明提供的具体实施方案可以看出,正是由于通过重用模块注册码和重用模 块校验码实现了权限验证,进而实现在软件重用模块层次上对软件进行保护。


图1为本发明提供的第一实施例方法流程图;图2为本发明提供的第一实施例注册码和校验码生成方法流程图;图3为本发明提供的第一实施例第二加密结果生成方法流程图;图4为本发明提供的第一实施例第一加密结果生成方法流程图;图5为本发明提供的第二实施例装置结构图。
具体实施例方式为了解决现有技术中在软件重用模块层次上还没有相应的保护方案的问题,本发 明的实施例提供一种软件重用模块的保护方法,当某个应用程序需要使用某个重用模块 时,则需要申请重用模块注册码,使用重用模块时,则需要提供该应用程序的标识,如应 用程序进程名称等。重用模块注册码的生成需要如下步骤,获取具有使用重用模块权限的 应用程序的标识ID1,根据KEYl和ID1,利用加密算法生成第一加密结果crytoText,根据 crytoText生成重用模块注册码licenseCode。其中密钥KEYl可以直接采用重用模块私有 密钥moduleKey,也可以采用对重用模块私有密钥moduleKey进行不可逆加密得到的加密 后结果moduleKeyHash。无论采用moduleKey还是采用moduleKeyHash作为KEYl,都是根 据重用模块私有密钥moduleKey得到密钥KEYl。生成重用模块注册码licenseCode后,需 要建立应用程序1和licenseCode两者之间的关联关系,以便当应用程序1运行时能够获 取licenseCode。在重用模块的使用入口处添加重用模块校验码moduleCode和校验程序 段,以便其被应用程序1调用时通过携带的moduleCode对调用其的应用程序使用权限进 行校验,moduleCode可以直接采用moduleKey,还可以采用字符编码后的moduleKeyHash, 当应用程序1运行时,获取licenseCode、应用程序1的标识ID1’和重用模块携带的 moduleCode。应用程序1调用重用模块后,通过携带的moduleCode对调用其的应用程序 使用权限进行校验,校验过程为,重用模块通过moduleCode得到密钥KEYl (moduleKey或 moduleKeyHash),根据密钥KEYl和应用程序1运行时获取的ID1,利用加密算法生成第二 加密结果hcNumber。根据应用程序1运行时获取的licenseCode得到crytoText,根据crytoText和 licNumber相同,确定应用程序1具有使用重用模块的权限,否则,没有使用权限。本发明提供的第一实施例是一种软件重用模块的保护方法,XML编辑器是一个多 媒体文本编辑器,作为应用程序使用。XML编辑器中的核心模块之一是修改痕迹模块,作为 一个独立的模块,不仅在XML编辑器中使用,在其它的应用模块中也频繁的使用,修改痕迹 模块在本发明实施例中作为重用模块,下面以在XML编辑器为具有使用重用模块权限的应用程序,修改痕迹重用模块被一应用程序使用后,对使用其的应用程序进行验证,判断该程 序是否是具有使用权限的XML编辑器来详细说明,方法流程如图1所示,包括步骤101 采用修改痕迹重用模块A的私有密钥moduleA,对XML编辑器的标识 XMLEditor进行对称加密生成crytoText,将crytoText作为修改痕迹重用模块A注册码 IicenseCodeJf moduleA作为修改痕迹重用模块A的校验码moduleCode。步骤102 将moduleCode添加在修改痕迹重用模块A的使用入口处,以便其被调 用时通过moduleCode对调用其的应用程序进行权限校验。步骤103 当应用程序1运行时,获取作为IicenseCode的crytoText、应用程序1 的标识ID1,和修改痕迹重用模块A中添加的作为moduleCode的moduleA。步骤104 采用修改痕迹重用模块A携带的moduleA对标识ID1’进行对称加密生 成第二加密结果licNumber。步骤105 根据crytoText和IicNumber相同,确定应用程序1具有使用重用模块 的权限,否则,没有使用权限。其中步骤101中,生成IicenseCode和moduleCode还可以如图2所示,具体而言, 生成crytoText的过程还可以是对修改痕迹重用模块A的私有密钥moduleA进行不可逆加 密(单向加密)得到moduleKeyHash,对XML编辑器的标识XMLEditor进行不可逆加密得到 appIdHash,将moduleKeyHash作为密钥对appIdHash进行对称力口密,生成crytoText。本 实施例中采用哈西运算实现不可逆加密。无论是moduleKey还是moduleKeyHash在本实施 例中的作用都是都是作为一个密钥,即都是根据重用模块私有密钥moduleKey得到的密钥 KEY1。密钥KEYl的作用就是和标识XMLEditor —起可以生成crytoText。对XMLEditor 和moduleA加密是单向的,确保crytoText不能被破解,增强了修改痕迹重用模块A的安 全性。进一步,还可以通过如下方式获得licenseCode和moduleCode,使用随机数作为 密钥对crytoText进行对称加密,加密的结果使用cryptoRandKey来表示。使用随机数 对crytoText进行加密,保证修改痕迹重用模块A每次生成的注册码都不同。将生成的 cryptoRandKey和上一步使用的随机数拼接形成IicCodeJf IicCode和moduleKeyHash使 用字符编码的方式生成可见字符,形成IicenseCode和moduleCode。其中步骤102,还可以是,将moduleKeyHash使用字符编码的方式生成的 moduleCode添加在修改痕迹重用模块A的使用入口处,无论是将moduleA直接作为修改 痕迹重用模块A的校验码moduleCode,还是将moduleKeyHash使用字符编码的方式生成 moduleCode,都是根据密钥 KEYl 得到 moduleCode。其中步骤103,获取修改痕迹重用模块A中添加的作为moduleCode的moduleA, 还可以是,若前述步骤中是将moduleKeyHash使用字符编码的方式生成的moduleCode添 加在修改痕迹重用模块A的使用入口处,则此时调用的修改痕迹重用模块A携带的是将 moduleKeyHash使用字符编码的方式编码后生成的moduleCode,同样获取的IicenseCode 为使用随机数进行加密处理后得到的1 icenseCode。由于之前建立有应用程序1和licenseCode的关联关系,如将licenseCode添加 到应用程序1相关的配置文件中,或将licenseCode添加到应用程序1相关的资源文件的 字符串资源中,或将licenseCode写到应用程序1的入口处。因此获取licenseCode具 体实施可以是,应用程序1运行时,进行后续权限验证的模块如加密狗可以通过读取携带有licenseCode的配置文件,得到licenseCode。或者,加密狗读取字符串资源中添加有 IicenseCode的资源文件,得到licenseCode。或者,将licenseCode写到应用程序1的入 口处,应用程序1运行时,加密狗直接由应用程序1得到licenseCode。加密狗将得到的 licenseCode注册在内存中提供给后续步骤使用。其中步骤104,第二加密结果IicNumber生成的过程还可以是,如图3所示,将修 改痕迹重用模块A携带的moduleCode (moduleCode是moduleKeyHash使用字符编码的方式 编码后生成的)解码,得到moduleKeyHash,对标识ID1,进行不可逆加密得到appIdHash,, 采用moduleKeyHash对appIdHash,进行对称加密生成第二加密结果licNumber。无论采 用哪种方式最终得到第二加密结果licNumber,都是通过moduleCode得到密钥KEY1,和标 识ID1,一起得到第二加密结果licNumber。这里密钥KEYl无论是moduleKeyHash还是 moduleA,作用都是和标识ID1,一起得到第二加密结果licNumber。若使用随机数进行加密处理后得到的licenseCode,在步骤105之前,还需 根据licenseCode得到crytoText,如图4所示,具体为对licenseCode进行解码,由 licenseCode转化为licCode,从IicCode分离出随机码和cryptoRandKey,随机码作为密 钥,对cryptoRandKey进行解密运算,生成crytoText。具体实施时可以将crytoText插入 到应用程序的注册码序列中,等待和licNumber比较时使用。对于步骤105,确定CrytoiText和licNumber相同,可以是通过将cryto^Text和 licNumber进行直接比较确定两者相同,也可以是,在步骤105之前,使用随机数(与加密 crytoText的随机数相同)作为密钥对licNumber进行对称加密,将加密的结果和随机数 拼接,得到一个拼接结果,将拼接结果使用字符编码的方式生成可见字符,形成最后的注册 比较码,将注册比较码和licenseCode进行比较,根据比较结果相同,确定crytoText和 licNumber 相同。本发明提供的第二实施例是一种软件重用模块的保护装置,其结构如图5所示, 包括第一生成模块201 用于根据第一密钥和具有使用重用模块权限的应用程序的标 识,利用加密算法生成第一加密结果,根据第一加密结果生成重用模块注册码,第一密钥为 根据重用模块私有密钥得到密钥;获取模块202 用于当需要使用重用模块的应用程序运行时,获取重用模块注册 码、该应用程序的标识和重用模块中添加的根据第一密钥得到的重用模块校验码;第二生成模块203 用于通过重用模块校验码得到第一密钥,根据第一密钥和应 用程序运行时获取的标识利用加密算法生成第二加密结果;权限确定模块204 用于通过重用模块注册码得到第一加密结果,根据第一加密 结果和第二加密结果相同,确定需要使用重用模块的应用程序具有使用重用模块的权限, 否则,没有使用权限。进一步,第一生成模块201 还用于采用进行单向加密后的重用模块私有密钥作 为第一密钥,对进行单向加密后的具有使用重用模块权限的应用程序的标识进行对称加密 得到第一加密结果。进一步,还包括校验码生成模块205 用于将作为第一密钥的进行单向加密后的重用模块私有密钥,使用字符编码的方式生成的可见字符作为重用模块校验码;第二生成模块203 用于将重用模块校验码进行字符解码得到进行单向加密后的 重用模块私有密钥,采用单向加密后的重用模块私有密钥,对进行单向加密后的应用程序 运行时获取的标识进行对称加密得到第二加密结果。进一步,第一生成模块201 还用于使用随机数作为密钥对第一加密结果进行对 称加密得到第三加密结果;将第三加密结果和随机数进行拼接,将拼接结果使用字符编码的方式生成的可见 字符作为重用模块注册码;权限确定模块204 还用于对重用模块注册码进行字符解码,从解码后的重用模 块注册码分离出第三加密结果和随机数,将随机数作为密钥对第三加密结果进行解密,得 到第一加密结果。进一步,第一生成模块201 还用于将第一加密结果使用字符编码的方式生成的 可见字符作为重用模块注册码;权限确定模块204 还用于将重用模块注册码进行字符解码得到第一加密结果。进一步,第一生成模块201 还用于采用重用模块私有密钥作为第一密钥,对具有 使用重用模块权限的应用程序的标识进行对称加密得到第一加密结果,将第一加密结果作 为重用模块注册码;权限确定模块204 还用于将重用模块注册码作为第一加密结果。进一步,还包括校验码生成模块205 用于将重用模块私有密钥作为重用模块校验码;第二生成模块203 用于将重用模块私有密钥作为第一密钥,采用重用模块私有 密钥对应用程序运行时获取的标识进行对称加密得到第二加密结果。进一步,获取模块202 还用于需要使用重用模块的应用程序运行时,读取携带有 重用模块注册码的配置文件,得到重用模块注册码;或需要使用重用模块的应用程序运行时,读取字符串资源中添加有重用模块注册码 的资源文件,得到重用模块注册码;或需要使用重用模块的应用程序运行时,读取在需要使用重用模块的应用程序中新 增的重用模块注册码,得到重用模块注册码。进一步,权限确定模块204:还用于根据直接比较第一加密结果和第二加密结果 确定两者相同。进一步,权限确定模块204:还用于使用随机数作为密钥对第二加密结果进行对 称加密得到第四加密结果;将第四加密结果和随机数进行拼接,将拼接结果使用字符编码的方式生成的可见 字符作为重用模块注册比较码;根据比较重用模块注册码和重用模块注册比较码,确定第 一加密结果和第二加密结果相同。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种软件重用模块的保护方法,其特征在于,包括根据第一密钥和具有使用重用模块权限的应用程序的标识,利用加密算法生成第一加 密结果,根据第一加密结果生成重用模块注册码,第一密钥为根据重用模块私有密钥得到 的密钥;当需要使用重用模块的应用程序运行时,获取重用模块注册码、该应用程序的标识和 重用模块中添加的根据第一密钥得到的重用模块校验码;通过重用模块校验码得到第一密钥,根据第一密钥和应用程序运行时获取的标识利用 加密算法生成第二加密结果;通过重用模块注册码得到第一加密结果,根据第一加密结果和第二加密结果相同,确 定需要使用重用模块的应用程序具有使用重用模块的权限,否则,没有使用权限。
2.如权利要求1所述的方法,其特征在于,根据第一密钥和具有使用重用模块权限的 应用程序的标识,利用加密算法生成第一加密结果具体为采用进行单向加密后的重用模块私有密钥作为第一密钥,对进行单向加密后的具有使 用重用模块权限的应用程序的标识进行对称加密得到第一加密结果。
3.如权利要求2所述的方法,其特征在于,根据第一密钥得到重用模块校验码具体为 将作为第一密钥的进行单向加密后的重用模块私有密钥,使用字符编码的方式生成的可见字符作为重用模块校验码;通过重用模块校验码得到第一密钥,根据第一密钥和应用程序运行时获取的标识利用 加密算法生成第二加密结果具体为将重用模块校验码进行字符解码得到进行单向加密后的重用模块私有密钥,采用单向 加密后的重用模块私有密钥,对进行单向加密后的应用程序运行时获取的标识进行对称加 密得到第二加密结果。
4.如权利要求3所述的方法,其特征在于,根据第一加密结果生成重用模块注册码具 体为使用随机数作为密钥对第一加密结果进行对称加密得到第三加密结果;将第三加密结果和随机数进行拼接,将拼接结果使用字符编码的方式生成的可见字符 作为重用模块注册码;通过重用模块注册码得到第一加密结果具体为对重用模块注册码进行字符解码,从解码后的重用模块注册码分离出第三加密结果和 随机数,将随机数作为密钥对第三加密结果进行解密,得到第一加密结果。
5.如权利要求3所述的方法,其特征在于,根据第一加密结果生成重用模块注册码具 体为将第一加密结果使用字符编码的方式生成的可见字符作为重用模块注册码;通过重用模块注册码得到第一加密结果具体为 将重用模块注册码进行字符解码得到第一加密结果。
6.如权利要求1所述的方法,其特征在于,根据第一密钥和具有使用重用模块权限的 应用程序的标识,利用加密算法生成第一加密结果,根据第一加密结果生成重用模块注册 码具体为采用重用模块私有密钥作为第一密钥,对具有使用重用模块权限的应用程序的标识进 行对称加密得到第一加密结果,将第一加密结果作为重用模块注册码; 通过重用模块注册码得到第一加密结果具体为将重用模块注册码作为第一加密结果。
7.如权利要求6所述的方法,其特征在于,根据第一密钥得到重用模块校验码具体为 将重用模块私有密钥作为重用模块校验码;通过重用模块校验码得到第一密钥,根据第一密钥和应用程序运行时获取的标识利用 加密算法生成第二加密结果具体为将重用模块私有密钥作为第一密钥,采用重用模块私有密钥对应用程序运行时获取的 标识进行对称加密得到第二加密结果。
8.如权利要求1所述的方法,其特征在于,当需要使用重用模块的应用程序运行时,获 取重用模块注册码具体为需要使用重用模块的应用程序运行时,读取携带有重用模块注册码的配置文件,得到 重用模块注册码;或需要使用重用模块的应用程序运行时,读取字符串资源中添加有重用模块注册码的资 源文件,得到重用模块注册码;或需要使用重用模块的应用程序运行时,读取在需要使用重用模块的应用程序中新增的 重用模块注册码,得到重用模块注册码。
9.如权利要求1所述的方法,其特征在于,根据第一加密结果和第二加密结果相同具 体为根据直接比较第一加密结果和第二加密结果确定两者相同。
10.如权利要求4所述的方法,其特征在于,根据第一加密结果和第二加密结果相同具 体为使用随机数作为密钥对第二加密结果进行对称加密得到第四加密结果; 将第四加密结果和随机数进行拼接,将拼接结果使用字符编码的方式生成的可见字符 作为重用模块注册比较码;根据比较重用模块注册码和重用模块注册比较码,确定第一加 密结果和第二加密结果相同。
11.一种软件重用模块的保护装置,其特征在于,包括第一生成模块用于根据第一密钥和具有使用重用模块权限的应用程序的标识,利用 加密算法生成第一加密结果,根据第一加密结果生成重用模块注册码,第一密钥为根据重 用模块私有密钥得到密钥;获取模块用于当需要使用重用模块的应用程序运行时,获取重用模块注册码、该应用 程序的标识和重用模块中添加的根据第一密钥得到的重用模块校验码;第二生成模块用于通过重用模块校验码得到第一密钥,根据第一密钥和应用程序运 行时获取的标识利用加密算法生成第二加密结果;权限确定模块用于通过重用模块注册码得到第一加密结果,根据第一加密结果和第 二加密结果相同,确定需要使用重用模块的应用程序具有使用重用模块的权限,否则,没有 使用权限。
12.如权利要求11所述的装置,其特征在于,第一生成模块还用于采用进行单向加密 后的重用模块私有密钥作为第一密钥,对进行单向加密后的具有使用重用模块权限的应用 程序的标识进行对称加密得到第一加密结果。
13.如权利要求12所述的装置,其特征在于,还包括校验码生成模块用于将作为第一密钥的进行单向加密后的重用模块私有密钥,使用字符编码的方式生成的可见字符作为重用模块校验码;第二生成模块用于将重用模块校验码进行字符解码得到进行单向加密后的重用模块 私有密钥,采用单向加密后的重用模块私有密钥,对进行单向加密后的应用程序运行时获 取的标识进行对称加密得到第二加密结果。
14.如权利要求13所述的装置,其特征在于,第一生成模块还用于使用随机数作为密 钥对第一加密结果进行对称加密得到第三加密结果;将第三加密结果和随机数进行拼接,将拼接结果使用字符编码的方式生成的可见字符 作为重用模块注册码;权限确定模块还用于对重用模块注册码进行字符解码,从解码后的重用模块注册码 分离出第三加密结果和随机数,将随机数作为密钥对第三加密结果进行解密,得到第一加 S结果ο
15.如权利要求11所述的装置,其特征在于,第一生成模块还用于采用重用模块私有 密钥作为第一密钥,对具有使用重用模块权限的应用程序的标识进行对称加密得到第一加 密结果,将第一加密结果作为重用模块注册码;权限确定模块还用于将重用模块注册码作为第一加密结果。
16.如权利要求15所述的装置,其特征在于,还包括校验码生成模块用于将重用模块私有密钥作为重用模块校验码;第二生成模块用于将重用模块私有密钥作为第一密钥,采用重用模块私有密钥对应 用程序运行时获取的标识进行对称加密得到第二加密结果。
全文摘要
为了解决现有技术在软件重用模块层次上还没有相应的保护方案的问题,本发明公开了一种软件重用模块的保护方法及装置,本发明公开的方法包括根据第一密钥和具有使用重用模块权限的应用程序的标识,生成第一加密结果并生成重用模块注册码,当需要使用重用模块的应用程序运行时,获取重用模块注册码、该应用程序的标识和根据第一密钥得到的重用模块校验码,通过重用模块校验码得到第一密钥,根据第一密钥和获取的标识生成第二加密结果,根据注册码得到第一加密结果,比较第一加密结果和第二加密结果,确定该应用程序是否具有使用重用模块的权限,正是由于通过注册码和校验码实现了权限验证,进而实现在软件重用模块层次上对软件进行保护。
文档编号G06F21/22GK102087689SQ20091024173
公开日2011年6月8日 申请日期2009年12月4日 优先权日2009年12月4日
发明者刘洋, 纪永凤 申请人:北京北大方正电子有限公司, 北大方正集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1