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   (已更新)

  • 相关阅读:
    BroadcastReceiver ANR
    Interview
    转载——JavaScript学习笔记:取数组中最大值和最小值
    __proto__与prototype
    javascript中的map和reduce
    css浮动与清除浮动
    转载——自适应网页设计
    《DOM Scripting》学习笔记-——第九章 CSS-DOM
    《DOM Scripting》学习笔记-——第八章 充实文档的内容
    《DOM Scripting》学习笔记-——第七章 动态创建html内容
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9159995.html
Copyright © 2011-2022 走看看