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

news2024/11/24 0:19:11

一、项目介绍

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaFX加载fxml文件几种方法

环境:idea,maven创建JavaFX工程 工程目录如下: MusicPlayer.java package cn.com;import java.io.IOException;import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.geo…

目标检测 Deformable DETR(2021)详细解读

文章目录 前言整体网络架构可变形注意力模块backbone生成多尺度特征多尺度位置编码prediction heads两个变体 前言 为解决DETR attention的计算量大导致收敛速度慢、小目标检测效果差的问题:提出了Deformable Attention,其注意力模块只关注一个query周围…

ML 系列: (10)— ML 中的不同类型的学习

一、说明 我们之前将机器学习方法分为三类:监督学习、无监督学习和强化学习。机器学习方法可以分为不同的类型,我们将在下面讨论最重要的类型。 二、懒惰学习与急切学习 预先学习的工作原理是使用训练数据构建模型,然后使用此模型评估测试数据…

STM32F103C8----3-3 蜂鸣器(跟着江科大学STM32)

一,电路图 (接线图) 面包板的的使用请参考:《面包板的使用_面包板的详细使用方法-CSDN博客》 二,目的/效果 3-3 蜂鸣器 三,创建Keil项目 详细参考:《STM32F103C8----2-1 Keil5搭建STM32项目模…

MySQL 中的 EXPLAIN 命令详解

在 MySQL 数据库中,EXPLAIN命令是一个非常强大的工具,它可以提供关于 SQL 查询执行计划的关键信息。理解这些信息对于优化查询性能至关重要。本文将详细介绍 MySQL 中的EXPLAIN命令提供的关键信息。 一、什么是 EXPLAIN 命令 EXPLAIN命令用于获取 MySQ…

Java多态(向上转型、动态绑定)+结合题目理解原理

第一次尝试使用markdowm写博客哈 文章目录 1.多态的引入2.重写和重载3.避免在构造方法里面去调用重写4.向上转型和向下转型5.让你真正明白什么是多态6.通过一些习题进行理解 1.多态的引入 首先说一下,这个想要使用多态需要我们满足的条件,然后具体的进行…

进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解

目录 一、冯诺依曼体系结构1、概念2、硬件层面的数据流3、关于冯诺依曼的知识点强调4、CPU 工作原理5、补充(CPU 和寄存器、高速缓存以及主存之间的关系) 二、操作系统(Operating System)1、概念2、定位3、设计 OS 的目的4、如何理…

Linux高级编程_28_进程

文章目录 进程并行与并发单道与多道程序进程控制块(PCB)了解PCB存储位置进程号:进程号:(PID)进程组号:(PGID)父进程号:(PPID) fork函数 多进程创建进程状态进…

基于vue框架的大学生勤工俭学咨询服务系统的设计与实现60uw9(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:大学生,企业,招聘信息,在线咨询,咨询回复,职位应聘 开题报告内容 基于Vue框架的大学生勤工俭学咨询服务系统的设计与实现 开题报告 一、研究背景 随着高等教育的普及与就业市场的竞争加剧,大学生勤工俭学已成为一种普遍现…

<<机器学习实战>>1-9节笔记

2.前言与导学 从关注算法的分类与特性到关注算法适合解决哪类问题 很多经典算法不再有效,但特征工程、集成学习越来越有效,和深度学习分别适合于不同领域 3、基本概念 如果预测目标是离散的,则是分类问题,否则回归 机器学习相比…

【AIGC】ChatGPT开发者必备:如何获取 OpenAI 的 API Key

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯API Key的重要性💯获取API Key的基本步骤💯定价策略和使用建议💯小结 💯前言 在现代应用开发中,获取OpenAI的…

TCP Analysis Flags 之 TCP ZeroWindowProbe

前言 默认情况下,Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态,并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时,会对每个 TCP 数据包进行一次分析,数据包按照它们在数据包列表中出现的顺序进行处理。可…

什么是沉默成本?超详细+通俗易懂版

沉默成本是一个在会计学、金融学以及经济学中常用的概念,但更常见的表述是沉没成本(Sunk Cost)。沉没成本指的是已经发生且无法收回的成本,这些成本与当前的决策无关,但往往会影响人们的决策过程。以下是对沉没成本的详…

【MySQL】Ubuntu环境下MySQL的安装与卸载

目录 1.MYSQL的安装 2.MYSQL的卸载 1.MYSQL的安装 首先我们要看看我们环境里面有没有已经安装好的MySQL 我们发现是默认是没有的。 我们还可以通过下面这个命令来确认有没有mysql的安装包 首先我们得知道我们当前的系统版本是什么 lsb_release -a 我们在找apt源的时候&a…

vulnhub-unknowndevice64 2靶机

vulnhub:https://www.vulnhub.com/entry/unknowndevice64-2,297/ 导入靶机,放在kali同网段,扫描 靶机在192.168.81.9,扫描端口 啥啊这都是,详细扫描一下 5555是adb,6465是ssh,12345看样子应该是…

Python 工具库每日推荐 【BeautifulSoup】

文章目录 引言Python工具库的重要性今日推荐:BeautifulSoup工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例获取 BeautifulSoup 官网文档首页的标题与所有图片案例分析扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript 设计模式 专栏…

医疗应急三维电子沙盘系统

一、主要硬件功能指标要求: 1.沙盘尺寸≥98寸;分辨率:≥19201080;亮度500cd/m2;对比度4000:1;显示模式16:9;电源:100VAC~240VAC(50/60Hz)&#xf…

如何在 MySQL 中处理大量的 DELETE 操作

在 MySQL 数据库的使用过程中,我们有时会面临需要处理大量 DELETE 操作的情况。如果处理不当,可能会导致数据库性能下降、锁等待甚至系统崩溃。本文将介绍一些在 MySQL 中处理大量 DELETE 操作的方法。 一、问题背景 当需要删除大量数据时,…

手写mybatis之实现映射器的注册和使用

前言 其实对于解决这类复杂的项目问题,核心在于要将主干问题点缩小,具体的手段包括:分治、抽象和知识。运用设计模式和设计原则等相关知识,把问题空间合理切割为若干子问题,问题越小也就越容易理解和处理。就像你可以把…

【论文阅读】Segment Anything Model for Road Network Graph Extraction

【论文阅读】Segment Anything Model for Road Network Graph Extraction (CVPRW 2024) Paper链接:https://openaccess.thecvf.com/content/CVPR2024W/SG2RL/html/Hetang_Segment_Anything_Model_for_Road_Network_Graph_Extraction_CVPRW_2024_paper.html 文章目录…