sqClass.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Management;
  6. using System.Security.Cryptography;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace Uninpho.Tools
  10. {
  11. public class sqClass
  12. {
  13. /// <summary>
  14. /// DES数据加密
  15. /// </summary>
  16. /// <param name="targetValue">目标值</param>
  17. /// <param name="key">密钥</param>
  18. /// <returns>加密值</returns>
  19. public static string Encrypt(string targetValue, string key)
  20. {
  21. //实例化加密类对象
  22. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  23. //定义字节数组用来存放密钥 GetBytes方法用于将字符串中所有字节编码为一个字节序列
  24. byte[] arr_key = Encoding.UTF8.GetBytes(key.Substring(0, 8));
  25. //!!!DES加密key位数只能是64位,即8字节
  26. //注意这里用的编码用当前默认编码方式,不确定就用Default
  27. byte[] arr_str = Encoding.UTF8.GetBytes(targetValue);//定义字节数组存放要加密的字符串
  28. MemoryStream ms = new MemoryStream();//实例化内存流对象
  29. //创建加密流对象,参数 内存流/初始化向量IV/加密流模式
  30. CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(arr_key, arr_key), CryptoStreamMode.Write);
  31. //需加密字节数组/offset/length,此方法将length个字节从 arr_str 复制到当前流。0是偏移量offset,即从指定index开始复制。
  32. cs.Write(arr_str, 0, arr_str.Length);
  33. cs.Close();
  34. string str_des = Convert.ToBase64String(ms.ToArray());
  35. return str_des;
  36. }
  37. /// <summary>
  38. /// DES数据解密
  39. /// </summary>
  40. /// <param name="targetValue"></param>
  41. /// <param name="key"></param>
  42. /// <returns></returns>
  43. public static string Decrypt(string targetValue, string key)
  44. {
  45. //定义字节数组用来存放密钥 GetBytes方法用于将字符串中所有字节编码为一个字节序列
  46. byte[] arr_key = Encoding.UTF8.GetBytes(key.Substring(0, 8));
  47. MemoryStream ms = new MemoryStream();
  48. //注意这里仍要将密文作为base64字符串处理获得数组,否则报错
  49. byte[] arr_des = Convert.FromBase64String(targetValue);
  50. //解密方法定义加密对象
  51. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  52. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(arr_key, arr_key), CryptoStreamMode.Write);
  53. cs.Write(arr_des, 0, arr_des.Length);
  54. cs.FlushFinalBlock();
  55. cs.Close();
  56. return Encoding.UTF8.GetString(ms.ToArray());
  57. }
  58. /// <summary>
  59. /// 获取CPU序列号
  60. /// </summary>
  61. /// <returns></returns>
  62. public static string GetCpuID()
  63. {
  64. try
  65. {
  66. //获取CPU序列号代码
  67. string cpuInfo = "";//cpu序列号
  68. ManagementClass mc = new ManagementClass("Win32_Processor");
  69. ManagementObjectCollection moc = mc.GetInstances();
  70. foreach (ManagementObject mo in moc)
  71. {
  72. cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
  73. }
  74. moc = null;
  75. mc = null;
  76. return cpuInfo;
  77. }
  78. catch
  79. {
  80. return "unknow";
  81. }
  82. finally
  83. {
  84. }
  85. }
  86. }
  87. }