using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Management;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace Uninpho.Tools
{
public class sqClass
{
///
/// DES数据加密
///
/// 目标值
/// 密钥
/// 加密值
public static string Encrypt(string targetValue, string key)
{
//实例化加密类对象
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//定义字节数组用来存放密钥 GetBytes方法用于将字符串中所有字节编码为一个字节序列
byte[] arr_key = Encoding.UTF8.GetBytes(key.Substring(0, 8));
//!!!DES加密key位数只能是64位,即8字节
//注意这里用的编码用当前默认编码方式,不确定就用Default
byte[] arr_str = Encoding.UTF8.GetBytes(targetValue);//定义字节数组存放要加密的字符串
MemoryStream ms = new MemoryStream();//实例化内存流对象
//创建加密流对象,参数 内存流/初始化向量IV/加密流模式
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(arr_key, arr_key), CryptoStreamMode.Write);
//需加密字节数组/offset/length,此方法将length个字节从 arr_str 复制到当前流。0是偏移量offset,即从指定index开始复制。
cs.Write(arr_str, 0, arr_str.Length);
cs.Close();
string str_des = Convert.ToBase64String(ms.ToArray());
return str_des;
}
///
/// DES数据解密
///
///
///
///
public static string Decrypt(string targetValue, string key)
{
//定义字节数组用来存放密钥 GetBytes方法用于将字符串中所有字节编码为一个字节序列
byte[] arr_key = Encoding.UTF8.GetBytes(key.Substring(0, 8));
MemoryStream ms = new MemoryStream();
//注意这里仍要将密文作为base64字符串处理获得数组,否则报错
byte[] arr_des = Convert.FromBase64String(targetValue);
//解密方法定义加密对象
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(arr_key, arr_key), CryptoStreamMode.Write);
cs.Write(arr_des, 0, arr_des.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
///
/// 获取CPU序列号
///
///
public static string GetCpuID()
{
try
{
//获取CPU序列号代码
string cpuInfo = "";//cpu序列号
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
moc = null;
mc = null;
return cpuInfo;
}
catch
{
return "unknow";
}
finally
{
}
}
}
}