一、License 包含的信息
明文状态下,使用json 字符串存储软件应用信息,以下简称(配置信息),如:
{
"validTime":"2023-04-30 23:59:59",
"aiList":[“person”,”xxxxxx”],
"deviceNum": 10,
“mainBoard”:”ASDFASDFAfasdfasdfqwer”,
“cpu”:”asdfasdfsdfas1234sef”
}
其中包含了 软件过期时间、AI使能列表、设备数量、主板编号、cpu编号,
二、如何根据配置信息生成License
1.对以上配置信息使用 AES + RSA 算法进行加密,并生成License,步骤如下:
(1)先计算出配置信息的MD5值。
(2)使用RSA加密算法对该MD5进行加密,加密后的密文为签名信息,附加在配置信息后面后续用于签名验签,伪代码:( 配置信息 ) + ( 签名信息 )
(3)附加完成后将整个信息用AES加密算法进行对称加密,生成出来的密文则为License
三、如何验证License 合法性
一般在登录系统时,需要验证License是否合法,步骤如下:
1.使用AES密钥对License 进行解密,解密后将得到: ( 配置信息 ) + ( 签名信息 )
2.使用RSA 私钥对其签名信息进行解密,得到配置信息的MD5码
3.再次计算当前配置信息的MD5并和当前解密后的MD5码进行比对,如果不一致则说明license不合法。
Ps:
1.AES 为对称加密算法,加密解密使用同一个密钥,加解密速度快。
2.RSA 为非对称加密算法,使用时生成一对公私密钥,公钥负责加密,私钥负责解密,加解密速度慢,并且对加密内容长度有限制,一般用于签名验证。
参考链接:(42条消息) 软件License设计思路与实现方案_软件license实现原理_chengpei147的博客-CSDN博客
网友评论