StableVersion4.3/HL_FristAidPlatform_Frame/DecryptHelper.cs

129 lines
4.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
}