一种序列号生成验证方法

文档序号:7864456阅读:1030来源:国知局
专利名称:一种序列号生成验证方法
技术领域
本发明涉及一种数据加密的方法,具体地说是一种序列号生成验证方法。
背景技术
现代商业软件产品通常作为包含软件代码和字母数字的产品密钥的物理介质来交付。软件供应商在对待特定用户和计算机启用与该软件相关联的完全权限之前要求其产品完成“激活”过程是常见的。序列号安装可以有效的保护软件,使得开发者与消费者的权利可以得到保障。虽然目前的序列号生成与验证方法很多,但多较为复杂,不够灵活。而且验证方式多为一次性 验证,不具有检查与更新的功能。

发明内容
本发明的技术任务是针对在现有技术的不足,提供一种采用小巧、简单、灵活的方法完成较高复杂系数的密钥生成与验证,并且能够对序列号进行有效管理,提供校验功能的序列号生成和验证方法。本发明的技术方案是按以下方式实现的,该一种序列号生成验证方法,该方法的具体实现过程为
1)、确定一组随机数字和关键数字,组合成为第一组关键字,该随机数字不重复;
2)、确定自定义部分并分别与第一组关键字进行异或操作,成为第二组关键字;
3)、用加密算法对第一组和第二组关键字进行加密,得到第三组关键字;
4)、将三组关键字组合为明文序列,并用分配秘钥算法得到的私有密钥对明文序列加密得到序列号;
5)、对步骤4)所得序列号进行验证。所述步骤3)中的加密算法为SHAl加密算法。所述步骤4)中的分配秘钥算法是指RSA算法。所述验证过程为
使用公有密钥对序列号进行解密,得到明文序列;
将明文序列还原为三组关键字;
分别对明文序列的相应部分进行异或操作,得到每个字段的值,在字典中查找这些值相应的操作,进而完成验证。本发明与现有技术相比所产生的有益效果是
本发明的一种序列号生成验证方法序列号生成方法相对简单,且采用了经过大众认可的较为安全的加密算法,并加入了密钥的使用,能够保证序列号的安全,有效的保证了开发者与消费者的权益,成本低,实用性强。
具体实施例方式现在提供一种序列号生成验证方法,其包括以下步骤
1)、确定一组随机数字,确保序列号不重复;
2)、确定一组关键数字;
3)、将步骤I)中确定的随机数字与步骤2)中确定的关键数字进行组合,得到一组新的关键字Keystr ;
4)、重新确定一组关键字;
5)、将步骤4)产生的关键字的各部分与Keystr相应的部分进行异或操作生成一组数 字 Payloadstr ;
6)、将Keystr与Payloadstr组合,经过SHAl散列算法加密,取前两位十六进制数生成一组数字Checksum,用于验证序列号正确性;
7)、将Kerstr、Checksum、Payloadstr组成加密使用的明文序列;
8)、使用非对称的RSA分配密钥算法得出私有密钥和公有密钥,使用私有密钥对明文序列加密生成序列号;
9)、对所生成的序列号进行验证使用公有密钥对序列号进行解密,得到明文序列;将明文序列按照长度还原为Keystr, Checksum, Payloadstr ;对Keystr和Payloadstr的组合进行SHAl加密,验证结果是否与Checksum相同;分别对明文序列的Keystr和Payloadstr部分进行异或操作,得到每个字段的值,在字典中查找这些值相应的操作,进而完成验证。
具体实施例步骤101,确定当前的系统日期Time,此日期需要精确到天,长度为16bit ;
步骤102,确定一组随机数字Random,用来保证序列号不会重复,长度为8bit ;这组随机数的长度在一个具体的实施例中比关键字的长度要长,越长的随机数加密效果越好。随机数可以采用现有很多随即算法生成。步骤103,将 Time 与 Random 组合,得到 Keystr,长度为 24bit ;
步骤104,将软件的编号与步骤103所得到的Keystr的高14bit进行异或操作,得到值为 Option,长度为 14bit ;
步骤105,将软件的版本代号与步骤103所得的Keystr的次高6bit进行异或操作,得到值为Product,长度为6bit ;
步骤106,将软件的安装类型代号与步骤103所得的Keystr的低4bit进行异或操作,得到值为Type,长度为4bit ;
步骤 107,将 Option, Product, Type 组合,得到 Payloadstr,长度为 24bit ;
步骤108,将步骤103所得的Keystr与步骤107所得的Payloadstr组合,用SHAl算法进行加密运算,取结果的前两位十六进制数,记为Checksum,可以验证Keystr与Payloadstr的正确性;
步骤109,将Keystr, Checksum, Payloadstr组合,成为明文序列;
步骤110,用RSA算法得出公私密钥,并用私钥对明文序列进行加密,得到值即为序列号。
步骤201,将序列号用公有密钥进行解密,得到明文序列;
步骤202,将明文序列按照长度还原为Keystr, Checksum, Payloadstr ;
步骤203,将上一步骤所得的Keystr与Payloadstr组合并用SHAl算法进行加密运算,验证结果是否与Checksum相同;
步骤204,对Payloadstr进行异或操作,按照长度对各部分与字典中的对应值进行验证比较。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改,等同替换等,均应包含在本发明的保护范围之内。
权利要求
1.一种序列号生成验证方法,其特征在于该方法的具体实现过程为I )、确定一组随机数字和关键数字,组合成为第一组关键字,该随机数字不重复;2)、确定自定义部分并分别与第一组关键字进行异或操作,成为第二组关键字;3)、用加密算法对第一组和第二组关键字进行加密,得到第三组关键字;4)、将三组关键字组合为明文序列,并用分配秘钥算法得到的私有密钥对明文序列加密得到序列号;5)、对步骤4)所得序列号进行验证。
2.根据权利要求1所述的一种序列号生成验证方法,其特征在于所述步骤3)中的加密算法为SHAl加密算法。
3.根据权利要求1所述的一种序列号生成验证方法,其特征在于所述步骤4)中的分配秘钥算法是指RSA算法。
4.根据权利要求1所述的一种序列号生成验证方法,其特征在于所述验证过程为 使用公有密钥对序列号进行解密,得到明文序列;将明文序列还原为三组关键字;分别对明文序列的相应部分进行异或操作,得到每个字段的值,在字典中查找这些值相应的操作,进而完成验证。
全文摘要
本发明提供一种序列号生成验证方法,该方法包括确定一组随机数字和关键数字,组合成为第一组关键字,该随机数字不重复;确定自定义部分并分别与第一组关键字进行异或操作,成为第二组关键字;用加密算法对第一组和第二组关键字进行加密,得到第三组关键字;将三组关键字组合为明文序列,并用分配秘钥算法得到的私有密钥对明文序列加密得到序列号;对所得序列号进行验证。该一种序列号生成验证方法和现有技术相比,序列号生成方法相对简单,且采用了经过大众认可的较为安全的加密算法,并加入了密钥的使用,能够保证序列号的安全,有效的保证了开发者与消费者的权益。
文档编号H04L9/08GK103023641SQ20121041235
公开日2013年4月3日 申请日期2012年10月25日 优先权日2012年10月25日
发明者宗栋瑞, 吴楠, 谢若鸿, 丛戎, 孟祥飞, 郭美思 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1