一、概念
License即使用许可证,只有被授权的方才可用合法使用相关产品。
一般通过一个或多个唯一标识来标识软件使用方,比如(计算机Mac地址、主板序列号和CPU序列号,或者是软件安装序列号、用户UUID)。
当然License也不是一定安全,破解伪造License也是最大的安全问题。
二、思路
1、授权注册码申请
格式:(系统名称 + 服务器硬件唯一标识 + 当前时间 )加密
- 服务器硬件唯一标识:计算机Mac地址、主板序列号和CPU序列号,或者是软件安装序列号。由其中的一项或几项共同组成
- 系统名称:名称随意,比如项目名称、客户名称、含义自定义(这里只是带指)。
- 当前时间:授权码申请的时间
对拼接后的明文数据,按照指定规则进行加密生成密文(授权注册码)
2、授权码生成
授权注册码一般保存为文件或者数据库中。通过授权注册码,反解析为未加密前的明文数据。添加授权截至时间,最后进行加密生成授权码。
授权码格式:(授权注册码 + 授权截至时间) 加密
ps:授权注册码和授权码都是采用可逆的加密算法,两者间相差授权截至时间。
3、授权码有效性验证
- 首先,判断授权码文件或数据是否存在
- 其次,访问系统,按照
授权注册码
生成规则,(系统名称+ 服务器硬件唯一标识)生成code,与授权码进行比较 - 最后,判断授权码中授权截至时间是否过期
三个步骤只要有一个不通过,则授权无效或过期。
三、流程
- 2、判断授权码是否存在:授权码一般通过文件或者数据库保存,首先检查授权码是否存在,如果不存在,代表授权不通过
- 4、反解密授权码baseCode:授权码格式:(系统名称+服务器硬件唯一标识+ 授权时间戳+授权截至时间)组成,并且先通过AES|DES 加密,然后通过RSA 私钥加密 生成。
为什么采用AES|DES + RSA 加密方式?
RSA算法本身要求加密内容也就是明文长度m必须在指定访问内,超出会提示报错。可以采用分段加密
方式来解决,但是效率过低,一般不建议采用。
优先选择方案:使用对称密钥(比如AES/DES等加解密方法)加密数据,然后使用非对称密钥(RSA加解密密钥)加密对称密钥。
- 5、通过(系统名称+服务器标识)生成code码:系统名称和服务器标识按照授权码规则获取拼接在一起
- 6、判断baseCode码是否包含code码:如果是同一个授权应用,baseCode码应该包含了code码
- 7、判断baseCode码中授权截至时间是否过期:授权码包含了授权截至时间,判断授权时间是否过期