using formula_manage.UserClass; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Management; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace formula_manage.Windows { /// /// CDKEY.xaml 的交互逻辑 /// public partial class CDKEY : Window { public CDKEY() { WindowStartupLocation = WindowStartupLocation.CenterScreen; InitializeComponent(); } string KEY; string SN; public string INIPath = Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "formula.ini"; private void Window_CDKEY(object sender, RoutedEventArgs e) //打开页面 { UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(INIPath); //读配置文件 // KEY = Configini.IniReadvalue("CDKEY", "KEY"); //读配置文件 // SN = Configini.IniReadvalue("CDKEY", "SN"); // 获取CPU序列号 string cpuSerialNumber = GetCPUSerialNumber(); // 获取主板序列号 string biosSerialNumber = GetBIOSSerialNumber(); // 获取硬盘序列号 //string hardDiskSerialNumber = GetHardDiskSerialNumber(); // 获取网卡地址 //string netCardMACAddress = GetNetCardMACAddress(); sn_id.Text = MD5Encrypt16(cpuSerialNumber+ biosSerialNumber); } /// /// 获取cpuid /// public static string GetCPUSerialNumber() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); string cpuSerialNumber = ""; foreach (ManagementObject mo in searcher.Get()) { cpuSerialNumber = mo["ProcessorId"].ToString().Trim(); break; } return cpuSerialNumber; } catch { return ""; } } /// /// 获取主板id /// public static string GetBIOSSerialNumber() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"); string biosSerialNumber = ""; foreach (ManagementObject mo in searcher.Get()) { biosSerialNumber = mo.GetPropertyValue("SerialNumber").ToString().Trim(); break; } return biosSerialNumber; } catch { return ""; } } /// /// 获取硬盘id /// public static string GetHardDiskSerialNumber() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); string hardDiskSerialNumber = ""; foreach (ManagementObject mo in searcher.Get()) { hardDiskSerialNumber = mo["SerialNumber"].ToString().Trim(); break; } return hardDiskSerialNumber; } catch { return ""; } } /// /// 获取网卡id /// public static string GetNetCardMACAddress() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))"); string netCardMACAddress = ""; foreach (ManagementObject mo in searcher.Get()) { netCardMACAddress = mo["MACAddress"].ToString().Trim(); break; } return netCardMACAddress; } catch { return ""; } } /// /// 16位MD5加密 /// /// /// public static string MD5Encrypt16(string password) { var md5 = new MD5CryptoServiceProvider(); string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(password)), 4, 8); t2 = t2.Replace("-", ""); return t2; } /// /// 32位MD5加密 /// /// /// public static string MD5Encrypt32(string password) { string cl = password; string pwd = ""; MD5 md5 = MD5.Create(); //实例化一个md5对像 // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl)); // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 for (int i = 0; i < s.Length; i++) { // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 pwd = pwd + s[i].ToString("X"); } return pwd; } /// /// 64位MD5加密 /// /// /// public static string MD5Encrypt64(string password) { string cl = password; //string pwd = ""; MD5 md5 = MD5.Create(); //实例化一个md5对像 // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl)); return Convert.ToBase64String(s); } private void Button_Click_2(object sender, RoutedEventArgs e) { string t; t = sn_id.Text.Substring(0,6); cdk.Text = t +"240102" + CRCcheck16.ToCRC16(CRCcheck16.StringToHexByte(t+ "240102"),true); } } }