DES.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Security.Cryptography;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace ZLPlugin_LisPacs_MR.Domain.Encript
  9. {
  10. internal class DES
  11. {
  12. /// <summary>
  13. /// DES加密
  14. /// </summary>
  15. /// <param name="pToEncrypt">加密内容</param>
  16. /// <param name="sKey">密钥</param>
  17. /// <returns></returns>
  18. public static string Encrypt_Des(string pToEncrypt, string sKey)
  19. {
  20. string ptostring = pToEncrypt.ToString();
  21. //8位密钥,16位加密结果
  22. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  23. byte[] inputByteArray = Encoding.Default.GetBytes(ptostring);
  24. des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  25. des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  26. des.Padding = PaddingMode.Zeros;
  27. MemoryStream ms = new MemoryStream();
  28. CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
  29. cs.Write(inputByteArray, 0, inputByteArray.Length);
  30. cs.FlushFinalBlock();
  31. StringBuilder ret = new StringBuilder();
  32. foreach (byte b in ms.ToArray())
  33. {
  34. ret.AppendFormat("{0:X2}", b);
  35. }
  36. ms.Dispose();
  37. return ret.ToString();
  38. }
  39. /// <summary>
  40. /// DES解密
  41. /// </summary>
  42. /// <param name="pToDecrypt">解密内容</param>
  43. /// <param name="sKey">密钥</param>
  44. /// <returns></returns>
  45. public static string Decrypt_Des(string pToDecrypt, string sKey)
  46. {
  47. string ptostring = pToDecrypt.ToString();
  48. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  49. byte[] inputByteArray = new byte[ptostring.Length / 2];
  50. for (int x = 0;
  51. x < ptostring.Length / 2; x++)
  52. {
  53. int i = (Convert.ToInt32(ptostring.Substring(x * 2, 2), 16));
  54. inputByteArray[x] = (byte)i;
  55. }
  56. des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  57. des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  58. des.Padding = PaddingMode.Zeros;
  59. MemoryStream ms = new MemoryStream();
  60. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
  61. cs.Write(inputByteArray, 0, inputByteArray.Length);
  62. cs.FlushFinalBlock();
  63. ms.Dispose();
  64. return System.Text.Encoding.Default.GetString(ms.ToArray());
  65. }
  66. }
  67. }