129 lines
4.2 KiB
C#
129 lines
4.2 KiB
C#
using HL_FristAidPlatform_Public;
|
||
using System;
|
||
using System.IO;
|
||
using System.Management;
|
||
using System.Security.Cryptography;
|
||
using System.Text;
|
||
|
||
namespace HL_FristAidPlatform_Frame
|
||
{
|
||
|
||
class DecryptHelper
|
||
{
|
||
private static string ComputerInfofile = @"D:\ComputerInfo.key";
|
||
private static string RegistInfofile = @"D:\RegistInfo.key";
|
||
|
||
public static bool CheckRegist(string key)
|
||
{
|
||
return CheckRegistData(key);
|
||
}
|
||
private static bool CheckRegistData(string key)
|
||
{
|
||
if (ExistRegistInfofile() == false)
|
||
{
|
||
return false;
|
||
}
|
||
else
|
||
{
|
||
string info = ReadFile(RegistInfofile);
|
||
string computer = ReadFile(ComputerInfofile);
|
||
string registData = Decrypt(info, "JKKJYXGS");
|
||
string[] reg = registData.Split(',');
|
||
if (computer == reg[0] && Information.Hospital.Name == reg[1] && DateTime.Now < Convert.ToDateTime(reg[2]))
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
public static bool ExistRegistInfofile()
|
||
{
|
||
return File.Exists(RegistInfofile);
|
||
}
|
||
public static string ReadRegistFile()
|
||
{
|
||
return ReadFile(RegistInfofile);
|
||
}
|
||
private static string ReadFile(string fileName)
|
||
{
|
||
string info = string.Empty;
|
||
try
|
||
{
|
||
using (StreamReader sr = new StreamReader(fileName))
|
||
{
|
||
info = sr.ReadToEnd();
|
||
sr.Close();
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
return info;
|
||
}
|
||
private static string Decrypt(string pToDecrypt, string sKey)
|
||
{
|
||
MemoryStream ms = new MemoryStream();
|
||
try
|
||
{
|
||
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
|
||
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
|
||
for (int x = 0; x < pToDecrypt.Length / 2; x++)
|
||
{
|
||
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
|
||
inputByteArray[x] = (byte)i;
|
||
}
|
||
des.Key = Encoding.ASCII.GetBytes(sKey);
|
||
des.IV = Encoding.ASCII.GetBytes(sKey);
|
||
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
|
||
cs.Write(inputByteArray, 0, inputByteArray.Length);
|
||
cs.FlushFinalBlock();
|
||
StringBuilder ret = new StringBuilder();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog("DecryptHelper", "Decrypt:\r\n" + ex);
|
||
}
|
||
return Encoding.Default.GetString(ms.ToArray());
|
||
}
|
||
|
||
public static string GetComputerInfo()
|
||
{
|
||
string info = string.Empty;
|
||
string cpu = GetHardWareInfo("Win32_Processor", "ProcessorId");
|
||
string bios = GetHardWareInfo("Win32_BIOS", "SerialNumber");
|
||
string mac = GetHardWareInfo("Win32_BaseBoard", "SerialNumber");
|
||
info = string.Concat(cpu, bios, mac);
|
||
return info;
|
||
}
|
||
private static string GetHardWareInfo(string typePath, string key)
|
||
{
|
||
try
|
||
{
|
||
ManagementClass managementClass = new ManagementClass(typePath);
|
||
ManagementObjectCollection mn = managementClass.GetInstances();
|
||
PropertyDataCollection properties = managementClass.Properties;
|
||
foreach (PropertyData property in properties)
|
||
{
|
||
if (property.Name == key)
|
||
{
|
||
foreach (ManagementObject m in mn)
|
||
{
|
||
return m.Properties[property.Name].Value.ToString();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
|
||
}
|
||
return string.Empty;
|
||
}
|
||
}
|
||
}
|