《QT实用小工具·十七》密钥生成工具

1、概述
源码放在文章末尾

该项目主要用于生成密钥,下面是demo演示:
在这里插入图片描述

项目部分代码如下:

#pragma execution_character_set("utf-8")#include "frmmain.h"
#include "ui_frmmain.h"
#include "qmessagebox.h"
#include "qfile.h"
#include "qprocess.h"
#include "qdebug.h"frmMain::frmMain(QWidget *parent) : QWidget(parent), ui(new Ui::frmMain)
{ui->setupUi(this);this->initForm();qDebug() << this->getCpuName() << this->getCpuId() << this->getDiskNum();
}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::getWMIC(const QString &cmd)
{//获取cpu名称:wmic cpu get Name//获取cpu核心数:wmic cpu get NumberOfCores//获取cpu线程数:wmic cpu get NumberOfLogicalProcessors//查询cpu序列号:wmic cpu get processorid//查询主板序列号:wmic baseboard get serialnumber//查询BIOS序列号:wmic bios get serialnumber//查看硬盘:wmic diskdrive get serialnumberQProcess p;p.start(cmd);p.waitForFinished();QString result = QString::fromLocal8Bit(p.readAllStandardOutput());QStringList list = cmd.split(" ");result = result.remove(list.last(), Qt::CaseInsensitive);result = result.replace("\r", "");result = result.replace("\n", "");result = result.simplified();return result;
}QString frmMain::getCpuName()
{return getWMIC("wmic cpu get name");
}QString frmMain::getCpuId()
{return getWMIC("wmic cpu get processorid");
}QString frmMain::getDiskNum()
{return getWMIC("wmic diskdrive where index=0 get serialnumber");
}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);
}void frmMain::on_btnOk_clicked()
{bool useDate = ui->ckDate->isChecked();bool useRun = ui->ckRun->isChecked();bool useCount = ui->ckCount->isChecked();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 key = QString("%1|%2|%3|%4|%5|%6").arg(useDate).arg(strDate).arg(useRun).arg(strRun).arg(useCount).arg(strCount);QFile file(QApplication::applicationDirPath() + "/key.db");file.open(QFile::WriteOnly | QIODevice::Text);file.write(getXorEncryptDecrypt(key, 110).toLatin1());file.close();QMessageBox::information(this, "提示", "生成密钥成功,将 key.db 文件拷贝到对应目录即可!");
}void frmMain::on_btnClose_clicked()
{this->close();
}

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArrayList中多线程的不安全问题

ArrayList中的不安全问题 正常的输出 List<String> list Arrays.asList("1","2","3"); list.forEach(System.out::println);为什么可以这样输出&#xff0c;是一种函数是接口&#xff0c;我们先过个耳熟 Arrys.asList是返回一个ArrayL…

【leetcode面试经典150题】40. 同构字符串(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

进程间通信 (匿名管道)

一、进程间通信的概念 进程间通信是一个进程把自己的数据交给另一个进程&#xff0c;它可以帮助我们进行数据传输、资源共享、通知事件和进程控制。 进程间通信的本质是让不同的进程看到同一份资源。因此&#xff0c;我们要有&#xff1a; 1、交换数据的空间。2、这个空间不能由…

端口号占用解决方法

进入cmd输入&#xff1a; 第一步输入&#xff1a;netstat -ano|findstr 8080 第二步输入&#xff1a;taskkill -pid **** -f (示例)&#xff1a; C:\Users\Administrator>netstat -ano|findstr 8080 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING …

AcWing 790. 数的三次方根——算法基础课题解

AcWing 790. 数的三次方根 题目描述 给定一个浮点数 n&#xff0c;求它的三次方根。 输入格式 共一行&#xff0c;包含一个浮点数 n。 输出格式 共一行&#xff0c;包含一个浮点数&#xff0c;表示问题的解。 注意&#xff0c;结果保留 6 位小数。 数据范围 −10000≤…

Linux链接文件管理——硬链接、符号链接

Linux链接文件管理——硬链接、符号链接 硬链接 硬链接是对文件的另一个名字&#xff0c;对于硬链接的文件来说&#xff0c;他们拥有同样的inode号(索引节点号)&#xff0c;表示它们是同一个文件。 创建硬链接不会消耗新的inode和block。 删除硬链接文件&#xff0c;不会影响…

hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

分析&#xff1a; 在启动hadoop服务的时候&#xff0c;遇到了这个问题&#xff1a; hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 这个一看就是&#xff0c;密钥问题 于是ssh 主机名就行测试 需要输入密码&#xff0c;就说明这里有问…

【C++】每日一题 28 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 #include <iostream> #include <string>…

C++笔记(函数重载)

目录 引入&#xff1a; 定义&#xff1a; 易错案例&#xff1a; 引入&#xff1a; 对于实现相似功能的函数&#xff0c;在命名时&#xff0c;我们常会出现命名重复的问题。对于C语言&#xff0c;编译器遇到这种命名重复的情况&#xff0c;会进行报错。而我们的C为了更方便程…

【计算机毕业设计】校园网书店系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

分布式锁-redission

5、分布式锁-redission 5.1 分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码…

pycharm一直打不开

一直处在下面的页面&#xff0c;没有反应 第一种方案&#xff1a; 以管理员身份运行 cmd.exe&#xff1b;在打开的cmd窗口中&#xff0c;输入 netsh winsock reset &#xff0c;按回车键&#xff1b;重启电脑&#xff1b;重启后&#xff0c;双击pycharm图标就能打开了&#xf…

深度理解运放增益带宽积

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海。 增益带宽积是运算放大器的重要参数之一&#xff0c;指的是运放的增益和带宽的乘积&#xff0c;这个乘积…

Mybatis-Plus使用方法

MyBatis-Plus 提供了丰富的增强版的 CRUD 方法&#xff0c;使得开发者能够更简洁、高效地进行数据库操作。以下是如何使用 MyBatis-Plus 自带的增强版 CRUD 方法的基本步骤&#xff1a; 添加依赖 首先&#xff0c;确保你的 Maven 项目中已经添加了 MyBatis-Plus 的相关依赖&a…

【S32K3 MCAL配置】-3.1-CANFD配置-经典CAN切换CANFD(基于MCAL+FreeRTOS)

"><--返回「Autosar_MCAL高阶配置」专栏主页--> 目录(共5页精讲,基于评估板: NXP S32K312EVB-Q172,手把手教你S32K3从入门到精通) 实现的架构:基于MCAL层 前期准备工作:

STC89C52学习笔记(四)

STC89C52学习笔记&#xff08;四&#xff09; 综述&#xff1a;本文讲述了在STC89C51中数码管、模块化编程、LCD1602的使用。 一、数码管 1.数码管显示原理 位选&#xff1a;对74HC138芯片的输入端的配置&#xff08;P22、P23、P24&#xff09;&#xff0c;来选择实现位选&…

玩转ChatGPT:Kimi测评(图片识别)

一、写在前面 ChatGPT作为一款领先的语言模型&#xff0c;其强大的语言理解和生成能力&#xff0c;让无数用户惊叹不已。然而&#xff0c;使用的高门槛往往让国内普通用户望而却步。 最近&#xff0c;一款由月之暗面科技有限公司开发的智能助手——Kimi&#xff0c;很火爆哦。…

【Keil5-编译4个阶段】

Keil5-编译 ■ GCC编译4个阶段■ 预处理->编译->汇编->链接■ GNU工具链开发流程图■ armcc/armasm&#xff08;编译C和汇编&#xff09;■ armlink &#xff08;链接&#xff09;■ armar &#xff08;打包&#xff09;■ fromelf &#xff08;格式转换器&#xff09…

C++17中的结构化绑定详解

C进阶专栏&#xff1a;http://t.csdnimg.cn/afM80 目录 1.什么是结构化绑定 2.结构化绑定的用法 2.1.对于数组 2.2.对于结构体 2.3.对于std::pair 2.4.对于std::tuple 2.5.对于std::array 2.6.对于类 2.7.结构化绑定与范围for循环 2.8.与const和引用结合使用 3.结构…

QTextStream的使用、技巧与注意事项

在Qt框架中&#xff0c;QTextStream类是进行文本数据读写操作的重要工具。无论是处理文本文件&#xff0c;还是在内存中操作字符串&#xff0c;QTextStream以其简洁易用的API和强大的功能&#xff0c;极大地简化了文本处理任务。本文将介绍QTextStream的使用方法、一些实用技巧…