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