一、概念

License即使用许可证,只有被授权的方才可用合法使用相关产品。

一般通过一个或多个唯一标识来标识软件使用方,比如(计算机Mac地址、主板序列号和CPU序列号,或者是软件安装序列号、用户UUID)。

当然License也不是一定安全,破解伪造License也是最大的安全问题。

二、思路

1、授权注册码申请

格式:(系统名称 + 服务器硬件唯一标识 + 当前时间 )加密
  • 服务器硬件唯一标识:计算机Mac地址、主板序列号和CPU序列号,或者是软件安装序列号。由其中的一项或几项共同组成
  • 系统名称:名称随意,比如项目名称、客户名称、含义自定义(这里只是带指)。
  • 当前时间:授权码申请的时间

对拼接后的明文数据,按照指定规则进行加密生成密文(授权注册码)

2、授权码生成

授权注册码一般保存为文件或者数据库中。通过授权注册码,反解析为未加密前的明文数据。添加授权截至时间,最后进行加密生成授权码。

授权码格式:(授权注册码 + 授权截至时间) 加密

ps:授权注册码和授权码都是采用可逆的加密算法,两者间相差授权截至时间。

3、授权码有效性验证

  • 首先,判断授权码文件或数据是否存在
  • 其次,访问系统,按照授权注册码生成规则,(系统名称+ 服务器硬件唯一标识)生成code,与授权码进行比较
  • 最后,判断授权码中授权截至时间是否过期

三个步骤只要有一个不通过,则授权无效或过期。

三、流程

3.1、授权码申请阶段

软件安装,根据服务器硬件等信息,生成授权注册码和授权码。
授权注册码用于后续授权码生成,一般不会改变。
授权码用于软件授权使用及授权截至时间。后续软件授权过期续租,软件使用方可根据授权码获取最新的授权码。

  • 1、生成授权注册码:软件首次安装,根据授权设备的唯一标识生成授权注册码,后续授权码过期后,根据授权注册码重新续约
  • 2、保存授权注册码:授权码注册码保存在文件或者数据库中
  • 3、根据授权注册码生成授权码:授权码生成是在授权注册码基础上,增加授权截至时间。

3.2、授权码验证阶段
授权码合法使用校验,只有合法的授权码才可以允许软件使用方使用。

  • 2、判断授权码是否存在:授权码一般通过文件或者数据库保存,首先检查授权码是否存在,如果不存在,代表授权不通过
  • 4、反解密授权码baseCode:授权码格式:(系统名称+服务器硬件唯一标识+ 授权时间戳+授权截至时间)组成,并且先通过AES|DES 加密,然后通过RSA 私钥加密 生成。

为什么采用AES|DES + RSA 加密方式?

RSA算法本身要求加密内容也就是明文长度m必须在指定访问内,超出会提示报错。可以采用分段加密方式来解决,但是效率过低,一般不建议采用。

优先选择方案:使用对称密钥(比如AES/DES等加解密方法)加密数据,然后使用非对称密钥(RSA加解密密钥)加密对称密钥。

  • 5、通过(系统名称+服务器标识)生成code码:系统名称和服务器标识按照授权码规则获取拼接在一起
  • 6、判断baseCode码是否包含code码:如果是同一个授权应用,baseCode码应该包含了code码
  • 7、判断baseCode码中授权截至时间是否过期:授权码包含了授权截至时间,判断授权时间是否过期

四、项目实战

基于RSA+AES 软件授权License相关推荐

  1. 软件授权License的区别

    许多开发者和设计者希望把他们的作品作为开源项目共享,他们希望其他人能够利用和共享他们的代码. 而各种开源社区就是因为这个原因而充满活力.开源软件可以用于你能想象得到的任何应用程序,许多web设计人员使 ...

  2. 国家商用密码(2)基于SM2的软件授权码生成及校验

    将公开密钥算法作为软件注册算法的好处是Cracker很难通过跟踪验证算法得到注册机.下面,将介绍使用SM2国密算法进行软件注册的方法. 生成授权码 选择SM2椭圆曲线参数(P,a,b,N,Gx,Gy) ...

  3. 软件授权加密算法研究

    软件授权加密算法研究 转载自 brucevanfdm . 介绍 软件授权机制的基础就是加密算法.加密算法可以简单分为对称加密算法(加解密均采用同一密钥)和非对称加密算法(采用公钥加密,私钥解密或私钥签 ...

  4. 基于RSA算法实现软件注册码原理初讨

    https://blog.csdn.net/larryliuqing/article/details/7457200 前言 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗 ...

  5. 基于C#的软件加密、授权与注册

      本文介绍了基于 本机特征信息(如CPU.主板.BIOS和MAC等) 的软件加密.授权与注册方法,并分享了 示例程序完整源代码. 目录 1 加密.授权与注册 2 本机特征信息 3 加密与解密算法 4 ...

  6. 基于RSA和AES混合加密实现的加解密小工具

    基于RSA和AES混合加密实现的加解密小工具 闲来无事,用python的tkinter开发了一个基于RSA和AES混合加密的小小工具.总结一下使用到的知识点. 首先是核心的加解密部分. 采用混合加密的 ...

  7. 开源软件为什么要有授权(License)

    如今开源软件非常多,而且有很多功能强大.很受欢迎的开源软件,作为一名程序员,我们甚至很难想象如果没有开源软件我们怎么工作.然而开源软件的"License"却很容易被人忽略,很多人觉 ...

  8. 一种混合加密方案在软件授权中的应用

    拥有知识产权的软件一般采取软件保护手段,需要使用某种方式激活软件才可以使用.软件激活本质是对密文数据进行比较,而密文数据是由软件开发商根据目标机器的特征数据进行加密产生的.激活过程是在认证服务器或者目 ...

  9. Springboot-软件授权License

    在我们做系统级框架的时候,我们要一定程度上考虑系统的使用版权,不能随便一个人拿去在任何环境都能用,所以我们需要给我们系统做一个授权认证机制,只有上传了我们下发的lic文件并验证通过,才能正常使用. 1 ...

最新文章

  1. SpringBoot+Echarts实现请求后台数据显示饼状图
  2. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构—— 1338:【例3-3】医院设置
  3. 在mysql中删除表正确的是什么_在MySQL中删除表的操作教程
  4. ASP.NET Core 优雅的在开发环境保存机密(User Secrets)
  5. 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-(一千零一拾一元整)输出。...
  6. Gitlab 从 12.1 版本开始将不再支持 MySQL !!!
  7. 固定字符结尾的正则_新手上路:图文解读助你理解和使用正则表达式
  8. net 调用java_NET调用Java之100-Continue的坑
  9. SecureRandom生成随机数慢(阻塞)问题解决记录
  10. 日志表数据量大查询慢问题
  11. 尔雅 2017大学计算机基础答案,2018超星尔雅大学计算机基础答案
  12. 将数据与OpenLayers结合在一起
  13. 题解 P2212 【[USACO14MAR]浇地Watering the Fields】
  14. S3C2440 蜂鸣器 汇编语言,S3C2440的基础功能模块实现过程
  15. Ubuntu 20.04安装绿联PL2303串口驱动
  16. CTB6.0标注体系
  17. 如歌芳华,编剧柯伊玟获奖后畅谈从影历程
  18. java实现国密加解密
  19. 3 :git分支机制
  20. qt写文本文件换行符_小小换行符乱谈(文本文件vs二进制文件)

热门文章

  1. 树莓派 音频本地的录制与播放、远程音频直播
  2. 计算机表格大小怎么调整,excel怎么调整表格大小
  3. 测试wifi覆盖范围的软件
  4. 修改/忘记数据库密码
  5. java搜索拉钩_java实现拉钩网上的FizzBuzzWhizz问题示例
  6. OPPOR9Plus系列通刷刷机包精简包_OPPOR9Plus线刷包救砖包_OPPOR9Plus纯净刷机包_OPPOR9Plus刷机教程下载
  7. Linux实战教学笔记15:磁盘原理
  8. Could not chdir to home directory /home/xxx:Permission denied
  9. dnSpy反编译工具调试netcore项目
  10. 计算机考试怎么考申论,公务员考试申论评分标准,这些你都知道吗?