OneCodePayEncryptUtil.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. 
  2. using Org.BouncyCastle.Utilities.Encoders;
  3. using SM2Crypto.Lib;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Net.Sockets;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PTMedicalInsurance.Common.SMLib
  11. {
  12. /// <summary>
  13. /// 一码付加解密封装
  14. /// </summary>
  15. internal class OneCodePayEncryptUtil
  16. {
  17. public static String encrypt(String data, String secKey)
  18. {
  19. //secKey是 ASCII 字符串 使用 —— 这是很多国密对接系统的常见做法,将其转换为 16 字节密钥(因为字符串长 16)
  20. byte[] keyBytes = Encoding.UTF8.GetBytes(secKey);
  21. //加密0数据
  22. String encryptDataStr = Hex.ToHexString(EasyGmUtils.sm4Encrypt(keyBytes, Encoding.UTF8.GetBytes(data))).ToUpper();
  23. return encryptDataStr;
  24. }
  25. public static String decrypt(String data, String secKey)
  26. {
  27. byte[] keyBytes = Encoding.UTF8.GetBytes(secKey);
  28. String decryptDataStr = Encoding.UTF8.GetString(EasyGmUtils.sm4Decrypt(keyBytes, Hex.Decode(data)));
  29. return decryptDataStr;
  30. }
  31. }
  32. }