EncryptHelper.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using AnHuiMI.Common;
  7. using Newtonsoft.Json.Linq;
  8. //using GMUtilLib;
  9. using PTMedicalInsurance.Variables;
  10. namespace PTMedicalInsurance.Helper
  11. {
  12. class EncryptHelper
  13. {
  14. private string appSecret = "1H1INA1L90OH3F60C80A00008119D616";
  15. private string appid = "1H1INA1L30OG3F60C80A0000DEE43558";
  16. public string encrypt(string data)
  17. {
  18. string encryptData = "";
  19. try
  20. {
  21. SM4Utils sm4 = new SM4Utils();
  22. string newKey = sm4.Encrypt_ECB(appSecret,appid);
  23. encryptData = sm4.Encrypt_ECB(data,newKey.Substring(0,32));
  24. return encryptData;
  25. }
  26. catch (Exception ex)
  27. {
  28. encryptData = ex.Message;
  29. return encryptData;
  30. }
  31. finally
  32. {
  33. Global.writeLog(";appid:" + appid,data,encryptData);
  34. }
  35. }
  36. public string sign(string data)
  37. {
  38. string encryptData = "";
  39. try
  40. {
  41. SM4Utils sm4 = new SM4Utils();
  42. string newKey = sm4.Encrypt_ECB(appSecret, appid);
  43. encryptData = sm4.Decrypt_ECB(data, newKey.Substring(0, 32));
  44. return encryptData;
  45. }
  46. catch (Exception ex)
  47. {
  48. encryptData = ex.Message;
  49. return encryptData;
  50. }
  51. finally
  52. {
  53. Global.writeLog(";appid:" + appid, data, encryptData);
  54. }
  55. }
  56. public string signWithSM2(JObject obj)
  57. {
  58. JObject joSign = JObject.Parse(JsonHelper.toJsonString(obj));
  59. Global.writeLog("去除空值:" + joSign.ToString());
  60. string data = sortKeys(joSign);
  61. Global.writeLog("排序:"+data);
  62. data += appSecret;
  63. Global.writeLog("加secret:" + data);
  64. Sm2Crypto crypto = new Sm2Crypto();
  65. string publicKey = "BPwaiORlFqBIiMMTyeATozdSsLCxlGa/8ouTosiHKKmVeSnSWRgdIHOEXzyCVQlRzPCsKB24ZA4E3G8t9biN1E=", privateKey = "APCIAgJqh3+AcK/IXL1WJD130i2q+6UblRxQzus3+sVw";
  66. //Sm2Crypto.GetKey(out privateKey, out publicKey);
  67. crypto.PublicKey = publicKey;
  68. crypto.PrivateKey = privateKey;
  69. crypto.Str = data;
  70. string ret = crypto.Encrypt();
  71. // base64
  72. return Convert.ToBase64String(Encoding.UTF8.GetBytes(ret));
  73. }
  74. public string sortKeys(JObject obj) {
  75. StringBuilder sb = new StringBuilder();
  76. Dictionary<string, string> dict = new Dictionary<string, string>();
  77. foreach (var p in obj.Properties())
  78. {
  79. dict.Add(p.Name, p.Value.ToString());
  80. }
  81. string[] keys = dict.Keys.ToArray();
  82. Array.Sort(keys, string.CompareOrdinal);
  83. foreach (var k in keys)
  84. {
  85. if (sb.Length > 1)
  86. {
  87. sb.Append("&");
  88. }
  89. sb.Append(k);
  90. sb.Append("=");
  91. sb.Append(dict[k]);
  92. }
  93. return sb.ToString();
  94. }
  95. public int verify(string data,string encryptData)
  96. {
  97. string error ="";
  98. try
  99. {
  100. //if (GMUtilLib.SignUtil.verifySm3WithSm2(data, ak, encryptData, sk))
  101. //{
  102. // return 0;
  103. //}
  104. //else
  105. //{
  106. // return -1;
  107. //}
  108. return 0;
  109. }
  110. catch (Exception ex)
  111. {
  112. error = ex.Message;
  113. return -1;
  114. }
  115. finally
  116. {
  117. Global.writeLog(";appid:" + appid, data + ";" + encryptData, error);
  118. }
  119. }
  120. public string decrypt(string encryptData)
  121. {
  122. string data = "";
  123. try
  124. {
  125. //string newKey = SM4.Encrypt(appSecret, appid)?.Substring(0, 32);
  126. //encryptData = SM4.Decrypt(encryptData, newKey);
  127. //data = GMUtilLib.SignUtil.decryptMsg(ak, sk, encryptData);
  128. return data;
  129. }
  130. catch (Exception ex)
  131. {
  132. data = ex.Message;
  133. return data;
  134. }
  135. finally
  136. {
  137. Global.writeLog(";appid:" + appid, encryptData, data);
  138. }
  139. }
  140. }
  141. }