zoukankan      html  css  js  c++  java
  • Qt-序列号生成器

    一直想做一个序列号的生成器,今天终于有了开始了,目前只有读取硬件生成,还没有做生成序列号的规则。

    目前实现的功能就是读取系统磁盘卷加上CPU ID 和自己的加密字符串,在利用MD5加密,转换成标准32位序列号。称为一个伪装好的加密序列。防止别人看我怎么生成,哈哈,不知道管用不。

    上最丑的界面

    核心代码

    /*
     * 生成序列号
     */
    const QString Poewr_Key::get_SerialNumber()
    {
        QString cpu_id = "";
        QProcess p(0);
        p.start("wmic CPU get ProcessorID");
        p.waitForStarted();
        p.waitForFinished();
        cpu_id = QString::fromLocal8Bit(p.readAllStandardOutput());
        cpu_id = cpu_id.remove("ProcessorId").trimmed();
    
        QString lpRootPathName = "C:\";
        LPTSTR lpVolumeNameBuffer=new TCHAR[12];//磁盘卷标
        DWORD nVolumeNameSize=12;// 卷标的字符串长度
        DWORD VolumeSerialNumber;//硬盘序列号
        DWORD MaximumComponentLength;// 最大的文件长度
        LPTSTR lpFileSystemNameBuffer=new TCHAR[10];// 存储所在盘符的分区类型的长指针变量
        DWORD nFileSystemNameSize=10;// 分区类型的长指针变量所指向的字符串长度
        DWORD FileSystemFlags;// 文件系统的一此标志
        GetVolumeInformation((LPTSTR)lpRootPathName.utf16(),
                             lpVolumeNameBuffer, nVolumeNameSize,
                             &VolumeSerialNumber, &MaximumComponentLength,
                             &FileSystemFlags,
                             lpFileSystemNameBuffer, nFileSystemNameSize);
        return (cpu_id.mid(0,4) + "D-"+ cpu_id.mid(4,4) + "R-" +
                cpu_id.mid(8,4) + "E-" + cpu_id.mid(12,4) + "A-" +
                QString::number(VolumeSerialNumber,10).mid(0,4)+"M");
    }
    /*
     * MD5加密
     */
    const QString Poewr_Key::hash_Encryption(const QString temp)
    {
        QByteArray byte_array;
        byte_array.append(temp);
        QByteArray hash_byte_array = QCryptographicHash::hash(byte_array,QCryptographicHash::Md5);
        return hash_byte_array.toHex().toUpper();
    }
    /*
     * 格式化生成序列号
     */
    const QString Poewr_Key::format_HASHString(const QString hashtemp)
    {
        QString retemp = "";
        for(int i = 0; i < 7; i++)
        {
            retemp += hashtemp.mid(4*i,4) + "-";
        }
        retemp += hashtemp.mid(28,4);
        return retemp;
    }
    /*
     * 去除格式,还原MD5序列
     */
    const QString Poewr_Key::remove_Format(const QString formathash)
    {
        QString temp = "";
        for(int i = 0; i < 8; i++)
        {
            temp += formathash.mid(5*i,4);
        }
        return temp;
    }


    源码连接 码云地址:https://gitee.com/DreamLife-Technology_DreamLife/Qt-Power_Key

                   GitHub地址:https://github.com/DreamLifeOffice/Power_Key   (已更新)

  • 相关阅读:
    python 生成器和推导式
    python 函数名 ,闭包 ,迭代器
    python 函数
    python BMI指数
    python 实现购物车的优化
    python 文件操作
    python set集合 深浅拷贝(难点)
    css中的float和position
    css一些简单的例子
    SQL测试题
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9159995.html
Copyright © 2011-2022 走看看