机器码生成
2026/6/4原创大约 1 分钟约 355 字
1. 生成 32 位机器码
using System.Management;
using System.Security.Cryptography;
using System.Text;
public string Get32BitMachineCode()
{
string cpuInfo = string.Empty;
string hddInfo = string.Empty;
// 获取CPU序列号
ManagementObjectSearcher cpuSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
foreach (ManagementObject mo in cpuSearcher.Get())
{
cpuInfo = mo["ProcessorId"].ToString();
break;
}
// 获取硬盘序列号
ManagementObjectSearcher hddSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in hddSearcher.Get())
{
hddInfo = mo["SerialNumber"].ToString();
break;
}
// 1. 拼接硬件信息
string rawInfo = cpuInfo + hddInfo;
// 2. 使用 MD5 生成 32 位哈希值
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(rawInfo);
byte[] hashBytes = md5.ComputeHash(inputBytes);
// 3. 将字节数组转换为 32 位的十六进制字符串
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2")); // X2 表示大写十六进制
}
return sb.ToString(); // 返回固定 32 位的字符串
}
}2. 生成 32 位注册码
public string Get32BitRegCode(string machineCode)
{
// 开发者自定义的内部密钥,用于增加破解难度
string secretKey = "My_Secret_Key_2024";
// 将机器码和密钥拼接
string rawString = machineCode + secretKey;
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(rawString);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString(); // 返回固定 32 位的注册码
}
}3. 调用
// 获取 32 位机器码
string mCode = Get32BitMachineCode();
Console.WriteLine("机器码: " + mCode); // 输出示例: 5D41402ABC4B2A76B9719D911017C592
// 生成 32 位注册码
string rCode = Get32BitRegCode(mCode);
Console.WriteLine("注册码: " + rCode); // 输出示例: 8B1A9953C4611296A827ABF8C47804D7