基于QT的注册码生成工具

Posted xu-349512236

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于QT的注册码生成工具相关的知识,希望对你有一定的参考价值。

最近需要为一个工具添加注册码,查阅了网上相关的资料,再结合自身的工程需求,简单整理一下。

  1、通过序列号生成注册码:

    (1)试用版注册码----一定时间后关闭软件,再次运行时需要重新注册;

    (2)正式版注册码----注册之后,运行软件不再需要注册;

  2、UI界面如下

  技术图片

  使用时需要在序列号编辑框中输入序列号,选择密钥类型,点击按钮,密钥框内就会显示生成的注册码。

  3、代码

    (1)头文件

 1 #ifndef VSPOWER_H
 2 #define VSPOWER_H
 3 
 4 #include <QtWidgets/QWidget>
 5 #include <Windows.h>
 6 #include <QString>
 7 #include <QCryptographicHash>
 8 #include "ui_vspower.h"
 9 
10 class VSPower : public QWidget
11 {
12     Q_OBJECT
13 
14 public:
15     VSPower(QWidget *parent = 0);
16     ~VSPower();
17 
18 private:
19     Ui::VSPowerClass ui;
20     QString m_Code;
21     QString m_codeMD4;
22 
23 private:
24 
25     //获得序列号
26     QString GetSerialNumber(QString processID);
27     //格式化序列号
28     QString FormatSerialNumber(const QString serialNum);
29     //正式版加密
30     QString OfficialEncryption(const QString temp);
31 
32     private slots:
33     //测试版加密
34     void TestSerialNum();
35     //生成密钥
36     void createCode();
37 
38 };
39 
40 #endif // VSPOWER_H

    (2)源文件

 1 #include "vspower.h"
 2 
 3 VSPower::VSPower(QWidget *parent)
 4     : QWidget(parent)
 5 {
 6     ui.setupUi(this);
 7     connect(ui.m_creatCode, &QPushButton::clicked, this, &VSPower::createCode);
 8     connect(ui.m_test, SIGNAL(clicked()), this, SLOT(TestSerialNum()));
 9 }
10 
11 VSPower::~VSPower()
12 {
13 
14 }
15 
16 QString VSPower::GetSerialNumber(QString processID)
17 {
18     //序列号
19     DWORD VolumeSerialNumber = 1111111;
20     m_Code = processID.mid(0, 4) + "U-" + processID.mid(4, 4) + "V-" +
21         processID.mid(8, 4) + "W-" + processID.mid(12, 4) + "X-" +
22         QString::number(VolumeSerialNumber, 10).mid(0, 4) + "6";
23 
24     return m_Code;
25 }
26 
27  //使用MD5加密
28 QString VSPower::OfficialEncryption(const QString temp)
29 {
30     QByteArray byte;
31     byte.append(temp);
32     //QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。
33     //目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。
34     QByteArray MD5byte = QCryptographicHash::hash(byte, QCryptographicHash::Md5);
35     return MD5byte.toHex().toUpper();
36 }
37 //生成测试版密钥
38 void VSPower::TestSerialNum()
39 {
40     QString qstr = ui.m_serialNum->text();
41     GetSerialNumber(qstr);
42     QByteArray byte;
43     byte.append(m_Code);
44     QByteArray MD4byte = QCryptographicHash::hash(byte, QCryptographicHash::Md4);
45     m_codeMD4 = MD4byte.toHex().toUpper();
46 }
47 
48 // 格式化生成的序列号
49 
50 QString VSPower::FormatSerialNumber(const QString serialNum)
51 {
52     QString tempSerial = "";
53     for (int i = 0; i < 7; i++)
54     {
55         tempSerial += serialNum.mid(4 * i, 4) + "-";
56     }
57     tempSerial += serialNum.mid(28, 4);
58     return tempSerial;
59 }
60 
61 // 生成密钥槽函数
62 
63 void VSPower::createCode()
64 {
65     if (ui.m_test->isChecked())
66     {
67         QString key = FormatSerialNumber(m_codeMD4);
68         ui.m_powerNum->setText(key);
69     }
70     else
71     {
72         QString qstr = ui.m_serialNum->text();
73         QString m_code = GetSerialNumber(qstr);
74         QString m_MD5Key = OfficialEncryption(m_code);
75         QString key = FormatSerialNumber(m_MD5Key);
76         ui.m_powerNum->setText(key);
77     }
78 }

 

   这里只是简单的完成注册码生成工具,使用时需要在序列号编辑框中输入序列号,选择密钥类型,点击按钮,密钥框内就会显示生成的注册码。仅供参考。

 

参考:Qt-序列号生成器

 

以上是关于基于QT的注册码生成工具的主要内容,如果未能解决你的问题,请参考以下文章

使用GPT-4生成QT代码

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

[vscode]--HTML代码片段(基础版,reactvuejquery)

QT 实用代码片段

基于QT第一个桌面程序(图标及背景等资源设置)