Qt如何生成license文件

44 篇文章 9 订阅

为什么生成license文件

有时候对于离线软件,需要进行功能控制,使用权限控制等,可以通过发布软件时候,先对部分功能进行加锁,禁掉部分功能,或者 控制使用期限。通过更新license文件,进行解锁,打开软件使用权,或者延长使用期限等。
实现该功能主要有以下几步:
1.设定好用于软件控制的信息
2.对要存入license文件中的信息进行加密;
3.加密信息写入license中;
4.读取license中的信息并进行解密

编辑控制信息

这个可以直接用QString 或者QStringList 表示,自己设定好格式就可以;解密后,安装设定的格式读取,在主程序里判断就可以。

加密信息方式

简单加密

通过改变编码方式,用户直接打开license文件时,是乱码:
加密:

//QString txt,dst;
QByteArray b64 = txt.toLocal8Bit().toBase64();// txt 被加密信息
dst = QString(b64);

解密:

QByteArray b64 = QByteArray::fromBase64(txt.toLocal8Bit());// txt 被解密信息
dst = QString(b64);
dst = QString(b64);

密码加密

通过设定加密密码,对文件进行加密,直接打开license文件时,也是乱码:

加密:

	QString pwd = ui.edtPassword->text().trimmed(); // 输入密码
    QString txt = ui.edtInput->text().trimmed(); // 加密信息

    if (pwd.isEmpty() || txt.isEmpty()) return;
    
    QString dst;
    QByteArray key = pwd.toLocal8Bit();
    QByteArray src_data = txt.toLocal8Bit();
    for (int i = 0; i < src_data.size(); ++i) {
        int idx = i % key.size();
        src_data[i] = src_data[i] ^ key[idx];// 同密码进行异或,也可以做其他移位运算
    }

    dst = QString(src_data);
    ui.edtEncrypt->setText(dst);

    saveMyFile(m_licFile, src_data);

解密:

 	QByteArray src_data;
    loadMyFile(m_licFile, src_data);
    if (src_data.isEmpty()) return;
    QString dst;
   
    QByteArray key = ui.edtPassword->text().toLocal8Bit();
    for (int i = 0; i < src_data.size(); ++i) {
        int idx = i % key.size();
        src_data[i] = src_data[i] ^ key[idx];
    }

    dst = QString(src_data);
    ui.edtDecrypt->setText(dst);

license文件的读写

就是基本的文件操作

void myLicFile::saveMyFile(const QString& filename, const QByteArray bytes)
{
    QFile f;
    f.setFileName(filename);
    if (!f.open(QIODevice::WriteOnly))
    {
        QMessageBox::warning(this, "Warning",tr("文件写入失败!"));
        return;
    }
    f.write(bytes);
    f.close();
}
void myLicFile::loadMyFile(const QString& filename, QByteArray& bytes)
{
   
    QFile f;
    f.setFileName(filename);
    if (!f.open(QIODevice::ReadOnly))
    {
        QMessageBox::warning(this, "Warning", tr("文件读取失败!"));
        return;
    }

    bytes.clear();
    bytes = f.readAll();
    f.close();
}

demo界面

![(https://img-blog.csdnimg.cn/7f0aaa202b344030b4276a35e98ccc18.png)

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows上使用Qt进行静态编译可以将Qt相关的库文件嵌入到生成的可执行文件中,使得该程序在其他Windows系统上运行时不需要依赖Qt的安装。以下是一个简单的Windows Qt静态编译教程: 1. 安装Qt开发环境:从Qt官网下载和安装Qt的开发工具包。确保选择想要的Qt版本和安装目录。 2. 下载Qt源代码:从Qt官网下载源代码,并解压到一个合适的目录。 3. 设置环境变量:打开命令提示符窗口,设置Qt的安装路径为环境变量。例如,如果Qt安装在"C:\Qt\5.15.2\mingw73_64",则需要将该路径添加到系统的PATH环境变量中。 4. 打开Qt源代码目录:在命令提示符窗口中,使用cd命令进入Qt的源代码目录。 5. 配置编译选项:运行以下命令来配置编译选项: ``` configure -static -prefix "C:\Qt\StaticBuild" -platform win32-g++ -developer-build -opensource -confirm-license ``` 其中,"-prefix"参数指定了Qt静态库的安装目录,可以根据需要进行修改。 6. 编译源代码:运行以下命令来编译Qt源代码: ``` mingw32-make ``` 这个过程可能需要一些时间,具体时间取决于你系统的配置和Qt源代码的大小。 7. 安装静态Qt库:运行以下命令来安装静态Qt库: ``` mingw32-make install ``` 这将把静态Qt库安装到之前指定的安装目录。 8. 创建Qt项目:使用Qt的开发工具创建一个新的Qt项目。 9. 修改项目配置文件:打开项目文件(.pro文件)并添加以下代码,以告诉Qt使用静态库: ``` CONFIG+= static ``` 10. 重新编译项目:重新编译项目,并确保生成的可执行文件不依赖于外部的Qt库。 以上就是一个简单的Windows Qt静态编译教程。静态编译可以提供更方便的发布和部署方式,但可能会导致可执行文件的体积增加。根据实际需求和项目要求,可以选择是否进行静态编译。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值