Qt-序列号生成器

简介: Qt-序列号生成器

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



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


上最丑的界面

image.png

核心代码

/*
 * 生成序列号
 */
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   (已更新)


目录
相关文章
|
4月前
|
存储 算法 编译器
【探索QTime】Qt中的时间操作与转换指南
【探索QTime】Qt中的时间操作与转换指南
672 0
|
编译器 C++
【Qt】信号槽的三种连接形式
三种形式的信号槽连接,connect 语法...
127 0
|
4月前
PyQt5信号创建及发送
PyQt5信号创建及发送
40 0
|
11月前
|
安全
NimFileBinder--Nim文件捆绑生成器
NimFileBinder--Nim文件捆绑生成器
|
监控 Python
Python自动发送消息小脚本,可用于各种聊天框~
Python自动发送消息小脚本,,懂的都懂~~
180 0
Python自动发送消息小脚本,可用于各种聊天框~
|
Windows
Qt安装消息处理qInstallMessageHandler输出详细日志
Qt安装消息处理qInstallMessageHandler输出详细日志
351 0
【Win32】资源文件(对话框),逆向对话框回调函数,消息断点(附带恶意软件源码)(下)
【Win32】资源文件(对话框),逆向对话框回调函数,消息断点(附带恶意软件源码)
|
安全 数据可视化 数据安全/隐私保护
【Win32】资源文件(对话框),逆向对话框回调函数,消息断点(附带恶意软件源码)(上)
【Win32】资源文件(对话框),逆向对话框回调函数,消息断点(附带恶意软件源码)
|
编译器
Qt信号参数中使用QVariantList时编译问题
今天调试代码时遇到一个奇怪的问题,不过一般感觉比较奇怪的问题,最后查到原因时,原因都比较简单!
163 0