基于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的注册码生成工具的主要内容,如果未能解决你的问题,请参考以下文章