门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
开放区(网友自由发帖区)
›
项目作品
›
历经十年/头发都快掉光/秘钥生成器终极版/机器码/到期功 ...
发布主题
返回列表
历经十年/头发都快掉光/秘钥生成器终极版/机器码/到期功...
0
回复
481
查看
[复制链接]
liudianwu
当前离线
积分
2716
liudianwu
累计签到:7 天
连续签到:1 天
来源:
2024-10-4 17:10:32
显示全部楼层
|
阅读模式
## 一、项目介绍
### 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" ,开始使用代码。
```cpp
//指定秘钥文件路径
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
](
https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A
) 提取码:o05q 文件名:bin_key.zip
2. 国内站点:[
https://gitee.com/feiyangqingyun
](
https://gitee.com/feiyangqingyun
)
3. 国际站点:[
https://github.com/feiyangqingyun
](
https://github.com/feiyangqingyun
)
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了