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
{
/// <summary>
/// CDKEY.xaml 的交互逻辑
/// </summary>
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 ) ;
}
/// <summary>
/// 获取cpuid
/// </summary>
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 "" ;
}
}
/// <summary>
/// 获取主板id
/// </summary>
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 "" ;
}
}
/// <summary>
/// 获取硬盘id
/// </summary>
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 "" ;
}
}
/// <summary>
/// 获取网卡id
/// </summary>
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 "" ;
}
}
/// <summary>
/// 16位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 64位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
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 ) ;
}
}
}