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 += "&key="+appSecret;
  63. Global.writeLog("加secret:" + data);
  64. Sm2Crypto crypto = new Sm2Crypto();
  65. string publicKey = "", privateKey = "";
  66. //string publicKey = "BPwaiORlFqBIiMMTyeATozdSsLCxlGa/8ouTosiHKKmVeSnSWRgdIHOEXzyCVQlRzPCsKB24ZA4E3G8t9biN1E=", privateKey = "APCIAgJqh3+AcK/IXL1WJD130i2q+6UblRxQzus3+sVw";
  67. Sm2Crypto.GetKey(out privateKey, out publicKey);
  68. crypto.PublicKey = publicKey;
  69. crypto.PrivateKey = privateKey;
  70. crypto.Str = data;
  71. string ret = crypto.Encrypt();
  72. // base64
  73. return Convert.ToBase64String(Encoding.UTF8.GetBytes(ret));
  74. }
  75. public string sortKeys(JObject obj) {
  76. StringBuilder sb = new StringBuilder();
  77. Dictionary<string, string> dict = new Dictionary<string, string>();
  78. foreach (var p in obj.Properties())
  79. {
  80. dict.Add(p.Name, p.Value.ToString());
  81. }
  82. string[] keys = dict.Keys.ToArray();
  83. Array.Sort(keys, string.CompareOrdinal);
  84. foreach (var k in keys)
  85. {
  86. if (sb.Length > 1)
  87. {
  88. sb.Append("&");
  89. }
  90. sb.Append(k);
  91. sb.Append("=");
  92. sb.Append(dict[k]);
  93. }
  94. return sb.ToString();
  95. }
  96. public int verify(string data,string encryptData)
  97. {
  98. string error ="";
  99. try
  100. {
  101. //if (GMUtilLib.SignUtil.verifySm3WithSm2(data, ak, encryptData, sk))
  102. //{
  103. // return 0;
  104. //}
  105. //else
  106. //{
  107. // return -1;
  108. //}
  109. return 0;
  110. }
  111. catch (Exception ex)
  112. {
  113. error = ex.Message;
  114. return -1;
  115. }
  116. finally
  117. {
  118. Global.writeLog(";appid:" + appid, data + ";" + encryptData, error);
  119. }
  120. }
  121. public string decrypt(string encryptData)
  122. {
  123. string data = "";
  124. try
  125. {
  126. SM4Utils sm4 = new SM4Utils();
  127. string newKey = sm4.Encrypt_ECB(appSecret, appid);
  128. data = sm4.Decrypt_ECB(encryptData, newKey.Substring(0, 32));
  129. return data;
  130. }
  131. catch (Exception ex)
  132. {
  133. data = ex.Message;
  134. return data;
  135. }
  136. finally
  137. {
  138. Global.writeLog(";appid:" + appid, encryptData, data);
  139. }
  140. }
  141. }
  142. }