首页 > 其他分享 >历经十年/头发都快掉光/秘钥生成器终极版/机器码/到期功能限制/运行时间限制/日期防篡改/跨平台

历经十年/头发都快掉光/秘钥生成器终极版/机器码/到期功能限制/运行时间限制/日期防篡改/跨平台

时间:2024-10-04 17:00:53浏览次数:1  
标签:终极版 文件 限制 生成器 到期 秘钥 机器码 跨平台 运行

一、项目介绍

1.0 前言说明

标题一点都不夸张,从第一版的秘钥生成器到今天这个版本,确实经历了十年的时间,最初的版本做的非常简陋,就是搞了个异或加密,控制运行时间,后面又增加设备数量的控制,然后就是到期时间的限制。这种有个巨大缺陷就是可复制性,如果将授权的秘钥文件,拷贝到其他电脑也是能正常运行的,老板急的哇哇叫,这怎么行呢,于是V2.0又增加了机器码的功能,最开始做的windows版本,后面遇到用户又需要linux和mac系统运行,不断增加了对应的唯一机器码的识别。这样就拷贝无法运行,必须一台机器对应一个秘钥,可是后面又发现写死也不行,所有又加了开关,可以开启是否启用机器码限制。

陆陆续续完善和验证了很多年,总体效果挺好,近期又有新的需求,那就是希望能够控制到期时间后限制部分功能,而不是不能运行,比如到期后视频右下角加上水印,用户还可以将过期的秘钥文件发过来,更新秘钥延长试用期限,这样就非常完美了。而且整个秘钥认证都是独立的静态函数,集成机器方便,就几行代码就行。

1.1 秘钥生成

  1. 由于支持多种功能限制,所以每一种功能都做了开关来开启,只有当开关开启后,对应设置的值才会起作用。
  2. 到期日期用来控制到期后限制部分功能,但是程序可以继续正常运行,也不弹窗提示。
  3. 到期时间用来控制最终可以运行程序的时间,到期后程序无法运行,会自动弹窗提示过期。
  4. 运行时间用来控制每次程序启动后,可以运行多久,单位分钟,如果设置30则表示每次程序启动后开始计时,知道运行满30分钟自动弹窗提示。
  5. 机器标识也就是机器码,支持windows、linux、mac系统,每台设备都是唯一,可以选择开启或者不开启机器标识的限制。开启后一个秘钥文件只能用到唯一的一台设备上。
  6. 最大数量用来控制软件中支持的设备的最大数量,比如控制摄像头最多添加5个,超过则弹出提示不允许继续添加。
  7. 加密数值用来生成秘钥的唯一密码,一般不同的软件可以指定不同的加密数值,这个数值用于加密解密。
  8. 到期日期和到日时间后面会显示剩余多少天字样,如果已经过期,则显示超过多少天字样。
  9. 单击本机标识按钮,自动识别本机的机器码,填入文本框中。
  10. 单击读取秘钥,自动读取当前目录下的key.lic文件,识别对应的内容并解析反馈显示到界面上。
  11. 单击写入秘钥,写入秘钥文件。然后可以将新生成的秘钥文件,复制到可执行文件对应目录,同文件替换即可。

1.2 更新秘钥

  1. 实际项目中都是以更新秘钥为主。本工具作为秘钥分发的控制端,牢牢控制在老板手里,用于控制收款进度。比如款没付完,可以设置尾款的最终日期为到期日期,之前正常运行,到了到期日期还没付完尾款,则自动限制部分功能的使用,比如视频上打上水印。程序能够继续正常运行,但是用户可以看到要交尾款了。
  2. 软件在新的设备首次运行,或者删除秘钥文件再次运行,会自动生成带有唯一机器码标识的秘钥文件,但是该文件是没有授权过的,需要发给控制端这边用来生成秘钥,相当于授权。
  3. 第一步,当用户端看到软件未授权请授权字样,将key.lic文件发给老板,老板将这个文件复制到keytool.exe文件同一目录。
  4. 第二步,双击打开keytool.exe,会自动读取目录下的key.lic文件,也可以单击读取秘钥按钮。
  5. 第三步,勾选对应要限制的功能,选择到期日期等参数,最后写入秘钥。然后将新生成的key.lic文件发给用户同文件替换即可。
  6. 这种逻辑策略有个好处就是,可以在原有的秘钥控制基础上进行更新,而不是重新生成。比如之前限制了运行时间,同时也限制了最大数量,在不知情的情况下,你并不知道用户那边的秘钥是控制了哪些功能,这样也就不好在原来的基础上更新限制。尤其是到期日期,有时候只是希望在原来的基础上,能够延长试用时间而已。

1.3 代码使用

  1. 第一步,将秘钥组件目录core_key拷贝到你的项目的上一级目录。
  2. 第二步,打开pro项目文件,加一行 include ($$PWD/../core_key/core_key.pri) 引入组件。
  3. 第三步,代码文件引入头文件 #include "keyhelper.h" ,开始使用代码。
//指定秘钥文件路径
KeyHelper::keyFile = "./key.lic";
//读取秘钥文件/读取后会自动开启各种认证和校验
KeyHelper::readKey();

//在需要控制数量的地方调用校验数量函数
int count = ui->listWidget->count();
if (!KeyHelper::checkCount(count)) {
    return;
}

//如果需要防日期时间篡改/程序结束的时候写入最后一次的正确时间
KeyHelper::writeKey();

二、功能特点

  1. 多种开关开启不同的秘钥功能限制。
  2. 可以开启机器码限制,一机一码,一台设备对应唯一的一个机器码,自动获取机器码和秘钥文件的机器码核对。
  3. 可以开启到期功能限制,超过了指定的日期后,对运行功能增加限制,比如视频上增加水印。程序还可以继续运行,只是功能有限制。
  4. 可以开启到期时间限制,到了指定的日期后,弹出到期提醒,自动关闭程序,程序无法继续运行。
  5. 可以开启运行时间限制,比如指定程序只能运行30分钟,每次打开程序后,运行30分钟,自动关闭程序,再次打开程序,还可以继续运行30分钟。
  6. 可以开启最大数量限制,比如设置最大数量5,则该软件中可以检测添加的设备数量是否超过5个,超过则不允许继续添加。
  7. 功能限制可以选择一种或者多种,满足各种需求场景。
  8. 内置防日期时间篡改功能,自动记忆秘钥写入时间和秘钥正常运行时间,一旦检测到电脑时间被篡改,程序无法打开,自动关闭程序。运行期间也会自动检测。
  9. 支持自动检测读取秘钥文件,如果存在到期日期或者到期时间限制,自动显示剩余天数。
  10. 多重加密算法,无法解密和破解。控制端可设定私有的加解密秘钥。
  11. 离线使用,无需联网,方便在各种离线设备使用。
  12. 同时支持windows、linux、mac系统,支持所有Qt版本。

三、相关链接

  1. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_key.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun

标签:终极版,文件,限制,生成器,到期,秘钥,机器码,跨平台,运行
From: https://www.cnblogs.com/feiyangqingyun/p/18446842

相关文章

  • 玄武星辰大阵——软件终端架构思维———未来之窗行业应用跨平台架构
    一、创生-玄武星辰大阵随着互联网的高速发展,企业的数字化进程不断加速,每个公司所涉及的业务日益繁多。少则数种,多则上千种,业务的复杂性催生了庞大而庞杂的系统。在这些系统中,重复功能屡见不鲜,重复的系统架构比比皆是。这不仅给维护工作带来了极大的挑战,也导致了大量的重复劳动......
  • 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)
    七,MyBatis-Plus扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)@目录七,MyBatis-Plus扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)1.乐观锁2.代码生成器3.执行SQL分析打印4.总结:5.最后:1.乐观锁首先我们需要先了解开发中的一个常见场景,叫做并发请求。并......
  • 聊一聊 C#中有趣的 SourceGenerator生成器
    一:背景1.讲故事前些天在看AOT的时候关注了下源生成器,挺有意思的一个东西,今天写一篇文章简单的分享下。二:源生成器探究之旅1.源生成器是什么简单来说,源生成器是Roslyn编译器给程序员开的一道口子,在这个口子里可以塞入一些自定义的cs代码,让Roslyn编译器在编译代码的时候顺......
  • .NET跨平台绘图基础库--SkiaSharp
    .NET跨平台绘图基础库--SkiaSharp SkiaSharp是一个跨平台的2D图形API,用于.NET平台,基于Google的Skia图形库。它提供了全面的2DAPI,可以在移动、服务器和桌面模型上渲染图像。SkiaSharp可以在多个.NET平台上使用,包括ASP.NETCore、WPF、Winform、MAUI、Avalonia......
  • 结对项目——小学四则运算题目自动生成器
    这个作业属于哪个课程<计科22级34班>这个作业要求在哪里<结对项目>这个作业的目标<实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)>团队成员<杨富国(3122004587)、李思柔(3222004638)>Github项目地址https://github.com/wWchao-111......
  • .NEET跨平台绘图基础库--SkiaSharp
    SkiaSharp是一个跨平台的2D图形API,用于.NET平台,基于Google的Skia图形库。它提供了全面的2DAPI,可以在移动、服务器和桌面模型上渲染图像。SkiaSharp可以在多个.NET平台上使用,包括ASP.NETCore、WPF、Winform、MAUI、AvaloniaUI和Uno。Skia是个2D向量图形处理函数......
  • 代码生成器实践总结
    最近,又用我的脚本管理,写了一个代码生成器。用在一个.netcoreWeb MVC项目中,想要把原来的一些Area,拷贝替换表名。业务上来说是:把推广模块,单独复制出一个推广-外部渠道的模块。专门给公司外部的推广人员用,但是不影响原来的功能。本质结构代码生成器= 模板+ 替换结论先......
  • 基于递归下降解析器的四则运算题生成器
    结对项目本次项目的GitHub位置:https://github.com/EIiasK/Eliask/tree/main/3122004566/Exercise_Generator项目成员及github地址郭人诵github地址:https://github.com/EIiasK/Eliask何其浚github地址:https://github.com/hugh143/hugh143这个作业属于哪个课程......
  • 横幅生成器
    您最近发帖时是否发现自己没有横幅?嗯,这也发生在我身上。我确实找到了一些发电机,但我确实喜欢将其全部保留在内部的想法。不,我不是指私人横幅生成器。事实上,您知道我们自己的一位dev.to作家一年前的作品吗?ChristopherKade制作了一款允许使用文本、表情符号、背景颜色和边框的......
  • AI跨时空拥抱合成视频爆火,AI图生图,图生视频操作简单。AI视频生成器
    目前AI跨越时空拥抱的视频爆火,以ai拥抱为例,可以看到这类型的视频,流量都不低。 AI项目玩法有很多,例如:AI生成肖像视频、老照片视频、拥抱视频、AI原创视频、搞笑视频、图转视频、AI二次元视频。AI项目玩法逻辑玩法一:获取使用AI小程序,生成视频,发布视频作品到各平台,吸粉......