該項目是注冊機和驗證機項目,分別是密鑰生成工具,和密鑰驗證demo,可以識別電腦唯一標識碼。
#include "frmmain.h"
#include "ui_frmmain.h"
#include "qmessagebox.h"
#include "qfile.h"
#pragma execution_character_set("utf-8")frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain)
{ui->setupUi(this);this->initForm();}frmMain::~frmMain()
{delete ui;
}void frmMain::initForm()
{QStringList min;min << "1" << "5" << "10" << "20" << "30";for (int i = 1; i <= 24; i++) {min << QString::number(i * 60);}ui->cboxMin->addItems(min);ui->cboxMin->setCurrentIndex(1);ui->dateEdit->setDate(QDate::currentDate());for (int i = 5; i <= 150; i = i + 5) {ui->cboxCount->addItem(QString("%1").arg(i));}
}QString frmMain::getXorEncryptDecrypt(const QString &data, char key)
{//采用異或加密,也可以自行更改算法QByteArray buffer = data.toLatin1();int size = buffer.size();for (int i = 0; i < size; i++) {buffer[i] = buffer.at(i) ^ key;}return QLatin1String(buffer);
}//將lineEdit數據復制到剪切板
void frmMain::copyLine(QLineEdit *line)
{QString str = line->text();QClipboard *clip = QApplication::clipboard();clip->setText(str);
}void frmMain::on_btnOk_clicked()
{bool useDate = ui->ckDate->isChecked();bool useRun = ui->ckRun->isChecked();bool useCount = ui->ckCount->isChecked();bool useMd5 = true;if (!useDate && !useRun && !useCount) {if (QMessageBox::question(this, "詢問", "確定要生成沒有任何限制的密鑰嗎?") != QMessageBox::Yes) {return;}}QString strDate = ui->dateEdit->date().toString("yyyy-MM-dd");QString strRun = ui->cboxMin->currentText();QString strCount = ui->cboxCount->currentText();QString strMd5 = ui->lineEdit_2->text();QString key = QString("%1|%2|%3|%4|%5|%6|%7|%8").arg(useDate).arg(strDate).arg(useRun).arg(strRun).arg(useCount).arg(strCount).arg(useMd5).arg(strMd5);QFile file(QApplication::applicationDirPath() + "/key.db");file.open(QFile::WriteOnly);file.write(getXorEncryptDecrypt(key, 110).toLatin1());file.close();QMessageBox::information(this, "提示", "生成密鑰成功,將 key.db 文件拷貝到對應目錄即可!");}void frmMain::on_btnClose_clicked()
{this->close();
}void frmMain::on_pushButton_clicked()
{QString jiqi;MD5 md;md.md5Init(jiqi);ui->lineEdit->setText(jiqi);copyLine(ui->lineEdit);
}void frmMain::on_pushButton_2_clicked()
{QString mi,qi;MD5 md;mi = md.md5Encrypt(1,qi);qDebug()<<"機器碼:"<<qi;qDebug()<<"密文:"<<mi;ui->lineEdit_2->setText(mi);copyLine(ui->lineEdit_2);
}void frmMain::on_pushButton_3_clicked()
{QString mi,qi;MD5 md;int t = md.md5Verify(ui->lineEdit_3->text());qDebug()<<"級別:"<<t;
}