Qt exe简单 加密
2018-03-06 15:52
579 查看
1,主程序 main 函数
#include <QMessageBox>
2,客户端,获取 磁盘序列号 经过运算后,提供给 服务端
#include "widget.h"
3,服务端 ,根据 客户端的序列号 生成 注册码,授权给客户端。
void Widget::on_genrateRegistrationCode_clicked()
#include <QMessageBox>
#include <Windows.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//注册
QString fileName = QApplication::applicationFilePath();
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::ReadOnly))
return 1;
int fileSize = file.size();
file.seek(fileSize-15);
char lp[15];
int number = file.read(lp,15);//读解密匙
file.close();
DWORD num=atol(lp);
num^=0x1999aa98;
num^=0x12345678;//解密演算,还原为c盘序列号
QString lpRootPathName = "C:\\";
DWORD VolumeSerialNumber;
GetVolumeInformation((LPTSTR)lpRootPathName.utf16(),NULL,12,&VolumeSerialNumber,NULL,NULL,NULL,15);
if(num!=VolumeSerialNumber)
{
QMessageBox::information(NULL,QStringLiteral("注册"),QStringLiteral("软件未注册,请先注册!"));
return 1;
}
Widget w;
w.show();
return a.exec();
}
2,客户端,获取 磁盘序列号 经过运算后,提供给 服务端
#include "widget.h"
#include "ui_widget.h"
#include <Windows.h>
#include <QMessageBox>
#include <QFile>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle(QStringLiteral("注册Client"));
//读取序列号
QString lpRootPathName = "C:\\";
DWORD VolumeSerialNumber;
GetVolumeInformation((LPTSTR)lpRootPathName.utf16(),NULL,12,&VolumeSerialNumber,NULL,NULL,NULL,15);
VolumeSerialNumber^=0x12345678;
ui->serialNumber->setText(QString::number(VolumeSerialNumber));
ui->registrationCode->setFocus();
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_registerBtn_clicked()
{
long num = ui->registrationCode->text().toLong();//序列号
num^=0x1999aa98;
if(num==ui->serialNumber->text().toLong())
{
QMessageBox::information(this,QStringLiteral("注册"),QStringLiteral("注册成功"));
//写入 exe
QString fileName = QApplication::applicationDirPath()+"/PVAssist.exe";
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::Append))
return;
int fileSize = file.size();
file.seek(fileSize);
char lp[15];
memcpy(lp,ui->registrationCode->text().toStdString().c_str(),15);
file.write(lp,15);
file.close();
}
else
QMessageBox::information(this,QStringLiteral("注册"),QStringLiteral("注册失败"));
}
3,服务端 ,根据 客户端的序列号 生成 注册码,授权给客户端。
void Widget::on_genrateRegistrationCode_clicked()
{
long num = ui->serialNumber->text().toLong();
num^=0x1999aa98;
ui->registerCode->setText(QString::number(num));
}
相关文章推荐
- Qt对中文文件的简单加密解密
- Qt 文本文件的简单加密解密
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径(最简单的方法是保持一样的安装路径,最方便的办法是设置qt.conf文件)
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 使用WinRar将Qt编译生成的exe和依赖的dll文件打包为一个exe文件的简单方法
- QT文件的转码实现简单加密解密
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 关于Qt下面的简单的文本加密功能
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- Qt简单编程--编译后exe文件的图标
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- Qt对中文文件的简单加密解密
- C++/Qt中一个简单的加密解密程序
- Qt用QProcess调用exe的简单方法
- Qt 文本文件的简单加密解密
- 用VS自带的dotfuscator.exe对exe或dll进行简单加密 以保护程序源码
- 简单信息的加密实现
- 参考(一)qt简单的hello world测试程序终端无输出问题