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

目前实现的功能就是读取系统磁盘卷加上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   (已更新)

Qt-序列号生成器的更多相关文章

  1. 开箱即用(out-of-box)的Redis序列号生成器,不用再写任何代码,你值得拥有

      先看整体效果 把简单的东西“傻瓜化”是软件开发追求的目标之一.请看下图: 左边是在 application.yml 里配置了3个生成器,右边可以直接注入到代码中使用,注意,不用写任何代码.这酸爽. ...

  2. myeclipse6.0 序列号生成器源码

    import java.io.*; public class Test{ private static final String LL = "Decompiling this copyrig ...

  3. mysql 序列号生成器 (自定义函数)

    https://yq.aliyun.com/articles/42600 http://bbs.csdn.net/topics/360203885 http://www.tuicool.com/art ...

  4. .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Software Protector序列号生成组件.今天就通过一篇简单的文章来预览一下其强大的功 ...

  5. PHP序列号生成函数和字符串替换函数代码

    /** * 序列号生成器 */ function snMaker($pre = '') { $date = date('Ymd'); $rand = rand(1000000,9999999); $t ...

  6. 微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)

    1.点评 对于IM系统来说,如何做到IM聊天消息离线差异拉取(差异拉取是为了节省流量).消息多端同步.消息顺序保证等,是典型的IM技术难点. 就像即时通讯网整理的以下IM开发干货系列一样: <I ...

  7. C# 流水号生成器开发

    前言 本文将使用一个Nuget公开的组件技术来实现一个流水号生成器,提供了一些简单的API,来方便的实现一个通用的流水号. 在visual studio 中的NuGet管理器中可以下载安装,也可以直接 ...

  8. Atitit atiuse软件系列

    Atitit atiuse软件系列 1.1.  Atian inputmethod 输入法 方言与多语言多文字支持 (au)1 1.2. File searcher 文件搜索器,支持压缩文件与正则表达 ...

  9. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  10. Delete,Update与LEFT Join

    UPDATE:UPDATE A SET ApproverID=NULL FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyB ...

随机推荐

  1. vue.js加入购物车小球动画

    生成一个动画小球的div,并且生成五个小球,五个是为了生成一定数量的小球来作为操作使用,按照小球动画的速度,一般来说五个也可以保证有足够的小球数量来运行动画 动画的内容分别是外层和内层,外层控制动画小 ...

  2. iOS开发中方法延迟执行的几种方式

    概述 项目开发中经常会用到方法的延时调用,下面列举常用的几种实现方式: 1.performSelector 2.NSTimer 3.NSThread线程的sleep 4.GCD 1.performSe ...

  3. spring配置redis(xml+java方式)(最底层)

    条件:引用好架包 <dependency> <groupId>org.springframework.data</groupId> <artifactId&g ...

  4. UITableView控件Protocell的Identifier设置 注意事项

    1.  注意:如果想使用Subtitle类型的单元格,需在Storyboard中将Protocell设置为subtitle类型,且Protocell的identifier必须与ViewControll ...

  5. Redis 基本操作(一)

    redis和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes.lists. sets 和sorted sets等结构.正是这些灵活的数据结构 ...

  6. iOS7下Status Bar字体颜色修改

    原文来自这里:iOS7下Status Bar字体颜色修改. 旧项目在iOS7上遇到status bar字体颜色需要修改的问题,症状如下:导航栏设置为黑色后,iphone上status bar的字体颜色 ...

  7. 通过xshell在linux上安装mysql5.7(终极版)

    通过xshell在linux上安装mysql5.7(终极版) 0)通过xshell连接到远程服务器 1)彻底删除原来安装的mysql 首先查看:rpm -qa|grep -i mysql 删除操作(一 ...

  8. 在centos6.7通过源码安装python3.6.7报错“zipimport.ZipImportError: can't decompress data; zlib not available”

    在centos6.7通过源码安装python3.6.7报错: zipimport.ZipImportError: can't decompress data; zlib not available 从 ...

  9. 全文检索引擎 sphinx-coreseek中文索引

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别为一些 ...

  10. 详解 Python3 正则表达式(一)

    本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些批注和修改 ^_^ 正则表达式介绍 正则表达式(Regular expressio ...