EncryptHelper.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using PTMedicalInsurance.Common;
  7. using Newtonsoft.Json.Linq;
  8. //using GMUtilLib;
  9. using PTMedicalInsurance.Variables;
  10. using Newtonsoft.Json;
  11. using SM2Crypto.Lib;
  12. namespace PTMedicalInsurance.Helper
  13. {
  14. class EncryptHelper
  15. {
  16. //private string ak = "1G94963I20403F60C80A00005FF7A699";
  17. //private string sk = "APyE9G1D+C8g3qV3Z6VshXztOa55YJBgwN+P4WqU5n0x";
  18. //private string appid = "1G94963HS03V3F60C80A00000DB330D8";
  19. ////测试环境
  20. //private string ak = "1GBJO22LJ00L3F60C80A00003C968398"; //appSecret 数字密钥sm4
  21. //private string sk = "AM4vzgpILAq9Rzh+uSIi4oXx5hl3jxUjvshjXXuAPggE"; //渠道私密
  22. //private string appid = "1GBJO22LD00K3F60C80A0000DD00AEFF"; //渠道ID
  23. //private string publicKey = "BIW3vR29ZhwXhhbEn6fyYV6zo4MHZyKfsOEf8AzJQf7WM+PzLcAiVj1JLqpumOyvAhjTnmEVVeVWpB/iNSHKaLE="; //平台公钥 验签
  24. ////正式环境
  25. //private string ak = "1GFIFVQQK04NE2470B0A00007DAE4B06"; //appSecret 数字密钥sm4
  26. //private string sk = "ALx/0FBWNQU8oUXXepBwwl9Tj0VREBfNnZxQfeGuAu9q"; //渠道私密
  27. //private string appid = "1GFIFVQQ104ME2470B0A0000B6E489E1"; //渠道ID
  28. //private string publicKey = "BK3M7nR1/AvhakqYMK23Kdek9ts2Ov732kL9t1ACoSSLqbAL2+IejtmJeaeTUNqSuctoDCT4Gsd0AGt7ZTIzgqY="; //平台公钥 验签
  29. private string ak = ""; //appSecret 数字密钥sm4
  30. private string sk = ""; //渠道私密
  31. private string appid = ""; //渠道ID
  32. private string publicKey = ""; //平台公钥 验签
  33. public EncryptHelper(string appId, string appSecret, string publicKey, string privateKey)
  34. {
  35. this.appid = appId;
  36. this.ak = appSecret;
  37. this.sk = privateKey;
  38. this.publicKey = publicKey;
  39. Global.writeLog($"appSecret:{ak} ;privateKey:{sk} ;appid:{appid};publicKey:{publicKey}");
  40. }
  41. public string encrypt(string data, ref string signText)
  42. {
  43. string encryptData = "";
  44. try
  45. {
  46. string strData = JsonConvert.SerializeObject(JObject.Parse(data), Newtonsoft.Json.Formatting.None);
  47. encryptData = SignUtils.encryptMsg(appid, ak, sk, strData, ref signText);
  48. return encryptData;
  49. }
  50. catch (Exception ex)
  51. {
  52. encryptData = ex.Message;
  53. return encryptData;
  54. }
  55. finally
  56. {
  57. //Global.writeLog("ak:" + appSecret + ";sk:" + privateKey + ";appid:" + appId, data, encryptData);
  58. }
  59. }
  60. public string sign(string data)
  61. {
  62. string encryptData = "";
  63. try
  64. {
  65. encryptData = SignUtils.signSm3WithSm2(ak, sk, data);
  66. return encryptData;
  67. }
  68. catch (Exception ex)
  69. {
  70. encryptData = ex.Message;
  71. return encryptData;
  72. }
  73. finally
  74. {
  75. Global.writeLog("ak:" + ak + ";sk:" + sk + ";appid:" + appid, data, encryptData);
  76. }
  77. }
  78. public string sortKeys(JObject obj) {
  79. StringBuilder sb = new StringBuilder();
  80. Dictionary<string, string> dict = new Dictionary<string, string>();
  81. foreach (var p in obj.Properties())
  82. {
  83. dict.Add(p.Name, p.Value.ToString());
  84. }
  85. string[] keys = dict.Keys.ToArray();
  86. Array.Sort(keys, string.CompareOrdinal);
  87. foreach (var k in keys)
  88. {
  89. if (sb.Length > 1)
  90. {
  91. sb.Append("&");
  92. }
  93. sb.Append(k);
  94. sb.Append("=");
  95. sb.Append(dict[k]);
  96. }
  97. return sb.ToString();
  98. }
  99. public bool verify(JObject signDto, string signData)
  100. {
  101. string error = "";
  102. try
  103. {
  104. bool b = SMUtil.verify(signDto, ak, publicKey, signData);
  105. if (b)
  106. {
  107. error = "成功";
  108. }
  109. else
  110. {
  111. error = "失败";
  112. }
  113. return b;
  114. }
  115. catch (Exception ex)
  116. {
  117. error = ex.Message;
  118. return false;
  119. }
  120. finally
  121. {
  122. Global.writeLog("验签:ak:" + ak + ";publicKey:" + publicKey + ";appid:" + appid, signDto.ToString() + ";" + signData, error);
  123. }
  124. }
  125. public string decrypt(string encryptData)
  126. {
  127. string data = "";
  128. try
  129. {
  130. data = SMUtil.decrypt(encryptData, appid, ak);
  131. return data;
  132. }
  133. catch (Exception ex)
  134. {
  135. data = ex.Message;
  136. return data;
  137. }
  138. finally
  139. {
  140. Global.writeLog("解密:ak:" + ak + ";sk:" + sk + ";appid:" + appid, encryptData, data);
  141. }
  142. }
  143. }
  144. }