【qt】获取CPU和硬盘进行MD5加密

从txt里进行获取后比对当前cpu和硬盘信息,不匹配直接退出

#include "widget.h"
#include 
#include 
#include 
#include 
#include 
#include 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    getMD5();
    compareMD5();
}

Widget::~Widget()
{
}

//=============================获取cpuid=============================
QString Widget::getcpuid()
{
    QString cmd = "wmic cpu get processorid";
    QProcess 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();

    qDebug() << result;
    return result;
}


//=============================获取硬盘序列号=============================
QString Widget::getDiskdrive()
{
    QProcess p(0);
    p.start("wmic diskdrive get serialnumber");
    p.waitForStarted();
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = result.split("\r\n");
    if (list.size() < 1)
        return "error";

    qDebug() << list.at(1).trimmed();
    return list.at(1).trimmed();
}

void Widget::getMD5()
{
    QString passWd = getDiskdrive() + getcpuid();//可以自由组合
    QByteArray str;
    str = QCryptographicHash::hash(passWd.toLatin1(),QCryptographicHash::Md5);
    str = QCryptographicHash::hash(str,QCryptographicHash::Sha256);
    MD5.append(str.toHex());
    qDebug()<<MD5;
}

void Widget::compareMD5()
{
    //=============================获取文本信息=============================
    QString filePath = QCoreApplication::applicationDirPath() + "/1.txt";
    QFile file(filePath);
    if (!file.exists())
        QMessageBox::information(NULL, u8"提示", u8"密钥文件不存在");
    if (!file.open(QIODevice::ReadOnly|QIODevice::Text))//打开指定文件
        QMessageBox::about(NULL, u8"文件", u8"获取密钥失败!");
    QTextStream key(&file);
    QString line = key.readLine();
    file.close();
    //=============================校验=============================
    if(line != MD5)
    {
        QMessageBox::information(NULL, u8"提示", u8"无权限!");
        exit(0);
    }
}

你可能感兴趣的:(qt)