using System;
using System.Collections.Generic;
using System.Text;
using System.Management;//硬件获取
using System.IO;//
using System.Security.Cryptography;//
namespace PurviewSoft
{
public class PurviewSoftClass
{
/// <summary>
/// 获取CPU编号
/// </summary>
/// <returns>返回CPU序列号</returns>
private static string GetCPUSerialNumber()
{
string cpuSerialNumber = string.Empty;
ManagementClass mc = new ManagementClass("Win32_processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuSerialNumber = mo["ProcessorId"].ToString();
break;
}
mc.Dispose();
moc.Dispose();
return cpuSerialNumber;
}
/// <summary>
/// DES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
private static string EncryptString(string encryptString)
{
try
{
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
byte[] rgbKey = Encoding.UTF8.GetBytes("jiao1990");
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
using (CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, IV), CryptoStreamMode.Write))
{
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
}
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}
//-------------------------------------------------------------------------------------------------------------------------
/// <summary>
/// 生成的用户ID属性
/// </summary>
public static string UserId
{
get { return GetCPUSerialNumber(); }
}
/// <summary>
/// 获取由程序生成的正确密匙(管理员使用)
/// </summary>
/// <param name="userId">用户反馈给管理员的产品编号</param>
/// <returns>正确的授权号</returns>
public static string GetUserPassWord(string userId)
{
//分析密码是否正确
string userPassWord = EncryptString(userId);
return userPassWord;
}
/// <summary>
/// 获取用户是否通过验证
/// </summary>
/// <param name="passWord">用户输入的密码</param>
/// <returns>true:是会员,false:不是会员</returns>
public static bool GetUserRule(string passWord)
{
bool isUser = false;
try
{
//分析用户输入的密码是否正确
string userId = GetCPUSerialNumber();//获取CPU编号
string userPassWord = EncryptString(userId);//加密CPU编号
if (passWord == userPassWord)
{
isUser = true;
}
}
catch
{ }
return isUser;
}
/// <summary>
/// 把密码写入配置文档
/// </summary>
/// <param name="passWord">用户输入的密码</param>
/// <param name="userInfoFilePath">保存密码的配置文件路径(保存为TXT或INI格式二进制文件)</param>
/// <returns>trur: 写入成功,false:写入失败</returns>
public static bool WriteUserInfo(string passWord, string userInfoFilePath)
{
bool isSucess = false;
try
{
bool isUser = GetUserRule(passWord);//获取是否通过会员验证
if (isUser)
{
//创建保存密码的配置文档
using (StreamWriter sw = File.CreateText(userInfoFilePath))
{
sw.WriteLine(passWord);
}
}
}
catch
{ }
return isSucess;
}
/// <summary>
/// 获取配置文件中记载的用户密码
/// </summary>
/// <param name="userInfoFilePath">配置文件路径</param>
/// <returns>记载的用户密码</returns>
public static string readUserInfo(string userInfoFilePath)
{
if (File.Exists(userInfoFilePath))//如果存在注册配置文件
{
using (StreamReader sr = File.OpenText(userInfoFilePath))
{
String input;
input = sr.ReadLine();
return input;
}
}
else
{
return null;
}
}
}
}