| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- /*
 
- * @Description: 
 
- * @Author: ylz-lichong
 
- * @Date: 2022-06-16 17:46:23
 
- */
 
- using Org.BouncyCastle.Utilities.Encoders;
 
- using System;
 
- using System.Text;
 
- using Newtonsoft.Json.Linq;
 
- using PTMedicalInsurance.Variables;
 
- namespace SM2Crypto.Lib
 
- {
 
-     class SMUtil
 
-     {
 
-         /**
 
-         * 加密
 
-         *
 
-         * @param data
 
-         * @param appId
 
-         * @param appSecret
 
-         * @return
 
-         */
 
-         public static String encrypt(String data, String appId, String appSecret)
 
-         {
 
-             //加密流程
 
-             //用appId加密appSecret获取新秘钥
 
-             byte[] appSecretEncData = EasyGmUtils.sm4Encrypt(Encoding.UTF8.GetBytes(appId.Substring(0, 16)), Encoding.UTF8.GetBytes(appSecret));
 
-             //新秘钥串
 
-             byte[] secKey = Encoding.UTF8.GetBytes(Hex.ToHexString(appSecretEncData).ToUpper().Substring(0, 16));
 
-             //加密0数据
 
-             String encryptDataStr = Hex.ToHexString(EasyGmUtils.sm4Encrypt(secKey, Encoding.UTF8.GetBytes(data))).ToUpper();
 
-             return encryptDataStr;
 
-         }
 
-         /**
 
-          * 解密
 
-          *
 
-          * @param data
 
-          * @param appId
 
-          * @param appSecret
 
-          * @return
 
-         */
 
-         public static String decrypt(String data, String appId, String appSecret)
 
-         {
 
-             byte[] appSecretEncDataDecode = EasyGmUtils.sm4Encrypt(Encoding.UTF8.GetBytes(appId.Substring(0, 16)), Encoding.UTF8.GetBytes(appSecret));
 
-             byte[] secKeyDecode = Encoding.UTF8.GetBytes(Hex.ToHexString(appSecretEncDataDecode).ToUpper().Substring(0, 16));
 
-             String decryptDataStr = Encoding.UTF8.GetString(EasyGmUtils.sm4Decrypt(secKeyDecode, Hex.Decode(data)));
 
-             return decryptDataStr;
 
-         }
 
-         /**
 
-         * 签名
 
-         *
 
-         * @param jsonObject
 
-         * @param appSecret
 
-         * @param privateKey
 
-         * @return
 
-         */
 
-         public static String sign(JObject jsonObject, String appSecret, String privateKey)
 
-         {
 
-             // 获取签名串
 
-             Global.writeLog("待签名串:" + SignUtil.getSignText(jsonObject, appSecret));
 
-             byte[] signText = Encoding.UTF8.GetBytes(SignUtil.getSignText(jsonObject, appSecret));           
 
-             byte[] userId = Encoding.UTF8.GetBytes(appSecret);
 
-             byte[] prvkey = Base64.Decode(privateKey);
 
-             String responseSign = Base64.ToBase64String(EasyGmUtils.signSm3WithSm2(signText, userId, prvkey));
 
-             return responseSign;
 
-         }
 
-         /**
 
-          * 验签
 
-          *
 
-          * @param jsonObject
 
-          * @param appSecret
 
-          * @param publicKey
 
-          * @param responseSign
 
-          * @return
 
-          */
 
-         public static Boolean verify(JObject jsonObject, String appSecret, String publicKey, String responseSign)
 
-         {
 
-             //验签
 
-             Global.writeLog("待验签串:" + SignUtil.getSignText(jsonObject, appSecret));
 
-             byte[] msg = Encoding.UTF8.GetBytes(SignUtil.getSignText(jsonObject, appSecret));
 
-             byte[] userIdDecode = Encoding.UTF8.GetBytes(appSecret);
 
-             byte[] pubkey = Base64.Decode(publicKey);
 
-             byte[] signData = Base64.Decode(responseSign);
 
-             return EasyGmUtils.verifySm3WithSm2(msg, userIdDecode, signData, pubkey);
 
-         }
 
-         /**
 
-         * 签名
 
-         *
 
-         * @param jsonObject
 
-         * @param appSecret
 
-         * @param privateKey
 
-         * @return
 
-         */
 
-         public static String sign(String jsonString, String appSecret, String privateKey)
 
-         {
 
-             JObject jsonObject = (JObject)JObject.Parse(jsonString);
 
-             // 获取签名串
 
-             byte[] signText = Encoding.UTF8.GetBytes(SignUtil.getSignText(jsonObject, appSecret));
 
-             byte[] userId = Encoding.UTF8.GetBytes(appSecret);
 
-             byte[] prvkey = Base64.Decode(privateKey);
 
-             String responseSign = Base64.ToBase64String(EasyGmUtils.signSm3WithSm2(signText, userId, prvkey));
 
-             return responseSign;
 
-         }
 
-         /**
 
-          * 验签
 
-          *
 
-          * @param jsonObject
 
-          * @param appSecret
 
-          * @param publicKey
 
-          * @param responseSign
 
-          * @return
 
-          */
 
-         public static Boolean verify(String jsonString, String appSecret, String publicKey, String responseSign)
 
-         {
 
-             JObject jsonObject = (JObject)JObject.Parse(jsonString);
 
-             //验签
 
-             byte[] msg = Encoding.UTF8.GetBytes(SignUtil.getSignText(jsonObject, appSecret));
 
-             byte[] userIdDecode = Encoding.UTF8.GetBytes(appSecret);
 
-             byte[] pubkey = Base64.Decode(publicKey);
 
-             byte[] signData = Base64.Decode(responseSign);
 
-             return EasyGmUtils.verifySm3WithSm2(msg, userIdDecode, signData, pubkey);
 
-         }
 
-     }
 
- }
 
 
  |