From af1cb3ecd0f4b0589e00b28f7f9edccf39e6e12b Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 10 九月 2020 16:15:11 +0800
Subject: [PATCH] 202009101

---
 HDL_ON/DAL/Net/MqttCommon.cs |  726 +++++++++++++------------------------------------------
 1 files changed, 174 insertions(+), 552 deletions(-)

diff --git a/HDL_ON/DAL/Net/MqttCommon.cs b/HDL_ON/DAL/Net/MqttCommon.cs
index 3d4a581..a2d2d5c 100644
--- a/HDL_ON/DAL/Net/MqttCommon.cs
+++ b/HDL_ON/DAL/Net/MqttCommon.cs
@@ -1,574 +1,196 @@
 锘縰sing System.Collections.Generic;
 using System;
-using MQTTnet.Client;
-using System.Threading.Tasks;
-using Shared;
 using System.Text;
 using System.Security.Cryptography;
-using System.IO;
-using HDL_ON.DAL;
-using HDL_ON.UI;
-using MQTTnet;
-using HDL_ON.DAL.Server;
 
 namespace HDL_ON.DAL.Net
 {
-    public static class MqttCommon
+
+    public class RemoteRequestParameters
     {
-        static string mqttEncryptKey = "";
-        static string checkGatewayTopicBase64 = "";
-        static RemoteMACInfo CurRemoteMACInfo = null;
+        public string RequestVersion;
+        public int RequestSource;
+        public string LoginAccessToken;
+        public int RequestProtocolType;
 
+        public int HdlGatewayGatewayType = 0;
+        public bool IsRedirectSelectEmqServer = false;
         /// <summary>
-        /// 鎵嬫満鏍囪瘑
+        /// 骞冲彴绫诲瀷瀛楃涓�
         /// </summary>
-        static Guid currentGuid = Guid.NewGuid();
-
+        public string PlatformStr;
         /// <summary>
-        /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
+        /// 鍙戝竷涓婚璐熻浇
         /// </summary>
-        static object isConnecting = false.ToString();
-        /// <summary>
-        /// 杩滅▼MqttClient
-        /// </summary>
-        public static IMqttClient RemoteMqttClient;
+        public string PublishPayloadJsonStr;
 
-        static bool thisShowTip = true;
-
-        public static async System.Threading.Tasks.Task Close(bool RemoveRemoteMqttClient = false)
-        {
-            try
-            {
-                if (RemoteMqttClient != null)
-                {
-                    //thisShowTip = true;
-                    await RemoteMqttClient.DisconnectAsync();
-                }
-                if (RemoveRemoteMqttClient)
-                {
-                    RemoteMqttClient = null;
-                }
-                CommonPage.IsRemote = false;
-            }
-            catch { }
-        }
-
-        static DateTime dateTime = DateTime.MinValue;
-
-        /// <summary>
-        /// 鍚姩杩滅▼Mqtt
-        /// </summary>
-        public static async System.Threading.Tasks.Task StartCloudMqtt()
-        {
-            /*
-            try
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    if (5 < (DateTime.Now - dateTime).TotalSeconds)
-                    {
-                        return;
-                    }
-                    dateTime = DateTime.Now;
-                });
-                if (!MainPage.LoginUser.IsLogin)
-                {
-                    isConnecting = false.ToString();
-                    return;
-                }
-                while (isConnecting.ToString() == true.ToString())
-                {
-                    if (5 < (DateTime.Now - dateTime).TotalSeconds)
-                    {
-                        break;
-                    }
-                    await System.Threading.Tasks.Task.Delay(500);
-                }
-                lock (isConnecting)
-                {
-                    if (isConnecting.ToString() == true.ToString())
-                    {
-                        return;
-                    }
-                    isConnecting = true.ToString();
-                    if (RemoteMqttClient != null)
-                    {
-                        MainPage.Log($"RemoteMqttClient.IsConnected: {RemoteMqttClient.IsConnected}");
-                    }
-                    //if (RemoteMqttClient != null && RemoteMqttClient.IsConnected) {
-                    //    return;
-                    //}
-
-                    new System.Threading.Thread(async () =>
-                    {
-                        try
-                        {
-                            //鏂紑鍚庨噸鏂伴摼鎺ラ渶瑕侀噸鏂扮櫥褰曡幏鍙栬繛鎺ョ殑瀵嗙爜
-                            var requestObj = new LoginObj() { Account = MainPage.LoginUser.AccountString.ToLower(), Password = MainPage.LoginUser.Password, Company = 1 };
-                            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
-                            var tempResult = HttpServerRequest.RequestHttps("Login", requestJson, "");
-                            if (tempResult == null)
-                            {
-                                //----------
-                                return;
-                            }
-                            var responsePack = tempResult.ResponseData;
-                            var dictrionaryResult = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(tempResult.ResponseData.ToString());
-                            var mqttRequestPar = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(tempResult.ResponseData.ToString());
-                            //杩樻湁绉嶆儏鍐垫槸鍚屼竴涓狪D 鏈夊涓澶囩敤杩欎釜id杩炴帴锛堜細瀵艰嚧涓柇锛�
-                            //mqttEncryptKey = dictrionaryResult ["HdlOnMqttKey"]?.ToString ();
-                            var url = dictrionaryResult["ConnectMqttBrokerLoadSubDomain"]?.ToString();
-                            var clientId = dictrionaryResult["ConnectMqttClientId"]?.ToString();
-                            var username = dictrionaryResult["ConnectMqttBrokerUserName"]?.ToString();
-                            var passwordRemote = dictrionaryResult["ConnectMqttBrokerPwd"]?.ToString();
-
-                            if (RemoteMqttClient == null)
-                            {
-                                var requestObj3 = new GatewayByRegionListObj() { RegionID = UserConfig.Instance.CurrentRegion.RegionID };
-                                MainPage.Log("Remote mqtt get Region MAC : " + UserConfig.Instance.CurrentRegion.RegionID);
-                                var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj3);
-                                var revertObj3 = HttpServerRequest.RequestHttps("GatewayByRegionList", requestJson3, true);
-                                if (revertObj3.StateCode == "SUCCESS")
-                                {
-                                    var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>>(revertObj3.ResponseData.ToString());
-                                    var gatewayList = responseDataObj;
-                                    if (gatewayList != null && gatewayList.Count > 0)
-                                    {
-                                        UserConfig.Instance.CurrentRegion.MAC = gatewayList[0].MAC;
-                                        UserConfig.Instance.SaveUserConfig();
-                                        MainPage.Log("Remote mqtt get Region MAC : " + gatewayList[0].MAC);
-                                    }
-                                }
-                                else
-                                {
-                                    MainPage.Log("Remote mqtt get Region MAC Erorr !!");
-                                }
-
-                                //(2)鍒涘缓Mqtt瀹㈡埛绔�
-                                RemoteMqttClient = new MqttFactory().CreateMqttClient();
-                                //(3)褰揫杩炴帴浜戠鐨凪qtt鎴愬姛鍚嶿鎴栬�匸浠ュ強鍚庨潰App閫氳繃浜戠Mqtt杞彂鏁版嵁缁欑綉鍏虫垚鍔熷悗],澶勭悊鎺ユ敹鍒颁簯绔暟鎹寘鍝嶅簲鏃跺湪mqttServerClient_ApplicationMessageReceived杩欎釜鏂规硶澶勭悊
-                                RemoteMqttClient.UseApplicationMessageReceivedHandler(async e =>
-                                {
-                                    if (isConnecting.ToString() == true.ToString())
-                                        isConnecting = false.ToString();
-                                    var aesDecryptTopic = e.ApplicationMessage.Topic;
-                                    var aesDecryptPayload = e.ApplicationMessage.Payload;
-                                    MainPage.Log(aesDecryptTopic);
-
-                                    if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}")
-                                    {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey
-                                     //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
-                                        var gatewayListUrl = @"https://developer.hdlcontrol.com/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� http 璇锋眰
-                                        var gatewayListRequestPar = new RemoteRequestParameters() { Mac = CurRemoteMACInfo.mac, LoginAccessToken = mqttRequestPar.Token, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 };
-                                        var gatewayListRequestResult = HttpServerRequest.RequestHttps("", Newtonsoft.Json.JsonConvert.SerializeObject(gatewayListRequestPar), false, gatewayListUrl);
-                                        var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo>(gatewayListRequestResult.ResponseData.ToString());
-                                        if (gatewayListRequestResult_Obj != null && gatewayListRequestResult_Obj.pageData.Count > 0)
-                                        {
-                                            CurRemoteMACInfo.aesKey = gatewayListRequestResult_Obj.pageData[0].aesKey;
-                                            mqttEncryptKey = CurRemoteMACInfo.aesKey;
-                                        }
-
-                                    }
-
-                                    if (aesDecryptTopic == "YouIpAndPortNoRecord" || aesDecryptTopic == "DecryptFail")
-                                    {// -->   浣犲綋鍓嶇殑IP鍙婄鍙e湪浜戠涓嶅瓨鍦�,璇烽噸鏂扮櫥褰曡繛鎺ヤ笅!
-                                        await Close(true);
-                                        //await MqttCheckGateway ();
-                                    }
-                                    else if (aesDecryptTopic == @"/BeingSqueezedOffline")
-                                    {
-                                        try
-                                        {
-
-                                        }
-                                        catch (Exception ex)
-                                        {
-                                            MainPage.Log(ex.Message);
-                                        }
-                                        finally
-                                        {
-
-                                        }
-                                    }
-                                    else
-                                    {
-                                        if (!string.IsNullOrEmpty(mqttEncryptKey))
-                                        {
-                                            aesDecryptTopic = Shared.Securitys.EncryptionService.AesDecryptTopic(e.ApplicationMessage.Topic, mqttEncryptKey);
-                                            aesDecryptPayload = Shared.Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
-                                        }
-                                        else
-                                        {
-                                            aesDecryptTopic = e.ApplicationMessage.Topic;
-                                            aesDecryptPayload = e.ApplicationMessage.Payload;
-                                        }
-                                    }
-                                    MainPage.Log($"Des Topic={aesDecryptTopic}");
-
-
-                                    var packet = new Packet();
-                                    packet.Bytes = aesDecryptPayload;
-                                    packet.Manager();
-
-                                });
-
-                                RemoteMqttClient.UseDisconnectedHandler(e =>
-                                {
-                                    if (thisShowTip)
-                                    {
-                                        if (CommonPage.IsRemote)
-                                        {
-                                            //----------
-                                        }
-                                    }
-                                    else
-                                    {
-                                        thisShowTip = true;
-                                    }
-                                });
-                                RemoteMqttClient.UseConnectedHandler(async e =>
-                                {
-                                    if (CurRemoteMACInfo != null)
-                                    {
-                                        if (CurRemoteMACInfo.isValid == "InValid")
-                                        {
-                                            //----------
-                                        }
-                                        else
-                                        {
-                                            CommonPage.IsRemote = true;
-                                            //----------
-                                        }
-                                    }
-                                });
-                            }
-
-                            if (clientId == null || username == null || passwordRemote == null)
-                            {
-                                return;
-                            }
-
-                            if (tempResult == null)
-                            {
-                                //----------
-                                return;
-                            }
-                            //--绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟
-                            var mqttInfoUrl = @"https://developer.hdlcontrol.com/Center/Center/GetConnMqttInfo";//鑾峰彇杩炴帴杩滅▼浜戠Emq Mqtt 鏈嶅姟鍣ㄨ繛鎺ヤ俊鎭�
-                            var mqttInfoRequestPar = new RemoteRequestParameters() { LoginAccessToken = mqttRequestPar.Token, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 };
-                            var mqttInfoRequestResult = HttpServerRequest.RequestHttps("", Newtonsoft.Json.JsonConvert.SerializeObject(mqttInfoRequestPar), false, mqttInfoUrl);
-
-                            if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null)
-                            {
-                                try
-                                {
-                                    var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo>(mqttInfoRequestResult.ResponseData.ToString());
-                                    if (mqttInfoRequestResult_Obj != null)
-                                    {
-                                        url = mqttInfoRequestResult_Obj.connEmqDomainPort;
-                                        clientId = mqttInfoRequestResult_Obj.connEmqClientId;
-                                        username = mqttInfoRequestResult_Obj.connEmqUserName;
-                                        passwordRemote = mqttInfoRequestResult_Obj.connEmqPwd;
-                                        //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
-                                        var gatewayListUrl = @"https://developer.hdlcontrol.com/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� http 璇锋眰
-                                        var gatewayListRequestPar = new RemoteRequestParameters() { LoginAccessToken = mqttRequestPar.Token, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 };
-                                        var gatewayListRequestResult = HttpServerRequest.RequestHttps("", Newtonsoft.Json.JsonConvert.SerializeObject(gatewayListRequestPar), false, gatewayListUrl);
-                                        var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo>(gatewayListRequestResult.ResponseData.ToString());
-                                        //--鎵惧嚭鏄惁瀛樺湪鍖归厤褰撳墠浣忓畢鐨刴ac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆�
-                                        CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find((obj) => obj.mac == UserConfig.Instance.CurrentRegion.MAC);
-                                        if (CurRemoteMACInfo != null)
-                                        {
-                                            CurRemoteMACInfo.LoginAccessToken = mqttRequestPar.Token;
-                                            mqttEncryptKey = CurRemoteMACInfo.aesKey;
-                                            var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
-                                                                .WithClientId(clientId)
-                                                                .WithTcpServer(url.Split(':')[1].Substring("//".Length), int.Parse(url.Split(':')[2]))
-                                                                .WithCredentials(username, passwordRemote)
-                                                                .WithCleanSession()
-                                                                .WithCommunicationTimeout(new TimeSpan(0, 0, 10))
-                                                                .Build();
-                                            await Close();
-                                            await RemoteMqttClient.ConnectAsync(options1);
-                                            await MqttRemoteSend(new byte[] { 0 }, 1);
-                                            await MqttRemoteSend(new byte[] { 0 }, 2);
-                                        }
-                                    }
-                                }
-                                catch { }
-                            }
-                        }
-                        catch (Exception ex)
-                        {
-                            Application.RunOnMainThread(() =>
-                            {
-                                if (MqttCommon.RemoteMqttClient != null)
-                                {
-                                    MqttCommon.RemoteMqttClient.Dispose();
-                                }
-                                if (MqttCommon.RemoteMqttClient != null)
-                                {
-                                    MqttCommon.RemoteMqttClient = null;
-                                }
-                            });
-                        }
-                        finally
-                        {
-                            isConnecting = false.ToString();
-                            //----------
-                        }
-                    })
-                    { IsBackground = true }.Start();
-                }
-            }
-            catch (Exception ex)
-            {
-                MainPage.Log("============>" + ex.Message);
-            }
-            finally
-            {
-                isConnecting = false.ToString();
-            }
-
-    */
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="message">闄勫姞鏁版嵁鍖�</param>
-        /// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁</param>
-        /// <returns></returns>
-        public static async System.Threading.Tasks.Task MqttRemoteSend(byte[] message, int optionType = 0)
-        {
-            try
-            {
-                if (RemoteMqttClient == null || !RemoteMqttClient.IsConnected)
-                {
-                    await StartCloudMqtt();
-                }
-                if (!RemoteMqttClient.IsConnected)
-                {
-                    return;
-                }
-                var topicName = @"/" + MainPage.LoginUser.AccountString.ToLower() + @"/" + UserConfig.Instance.GatewayMAC.Replace(".", "") + @"/" + currentGuid;
-                switch (optionType)
-                {
-                    case 0:
-                        if (!string.IsNullOrEmpty(mqttEncryptKey))
-                        {
-                            topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/OldON";
-                        }
-                        else
-                        {
-                            topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/NewON";
-                        }
-                        //base64鍔犲瘑
-                        var messageSend = Shared.Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey);
-                        var m = new MqttApplicationMessage { Topic = topicName, Payload = messageSend, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce };
-                        await RemoteMqttClient?.PublishAsync(m);
-                        break;
-                    case 1:
-                        topicName = $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/#";
-                        await RemoteMqttClient?.SubscribeAsync(topicName);
-                        break;
-                    case 2:
-                        var macStr = CurRemoteMACInfo.mac.ToUpper();
-                        char[] cArrs = macStr.ToCharArray();
-                        Array.Reverse(cArrs);
-                        var sss = string.Join(string.Empty, cArrs);
-
-                        using (var provider = new MD5CryptoServiceProvider())
-                        {
-                            byte[] buffer = provider.ComputeHash(Encoding.Default.GetBytes(sss));
-                            StringBuilder builder = new StringBuilder();
-                            for (int i = 0; i < buffer.Length; i++)
-                            {
-                                builder.Append(buffer[i].ToString("x2"));
-                            }
-                            CurRemoteMACInfo.md5_mac_string = builder.ToString().ToUpper();
-                        }
-
-                        topicName = $"/NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}";
-                        await RemoteMqttClient?.SubscribeAsync(topicName);
-                        break;
-                }
-            }
-            catch (Exception e)
-            {
-                isConnecting = false.ToString();
-            }
-        }
+        public string Mac = "";
+        public string GroupName = "";
     }
-}
 
-public class RemoteRequestParameters
-{
-    public string RequestVersion;
-    public int RequestSource;
-    public string LoginAccessToken;
-    public int RequestProtocolType;
-
-    public string Mac = "";
-    public string GroupName = "";
-}
-
-public class MqttRemoteInfo
-{
-    public List<RemoteMACInfo> pageData;
-
-    public int pageIndex = 0;
-    public int pageSize = 10;
-    public int totalCount = 3;
-    public int totalPages = 1;
-    public bool hasPreviousPage = false;
-    public bool hasNextPage = false;
-}
-
-public class MqttInfo
-{
-    public string connEmqDomainPort;
-    public string connEmqClientId;
-    public string connEmqUserName;
-    public string connEmqPwd;
-}
-
-public class RemoteMACInfo
-{
-    public string mac;
-    public string macMark;
-    public string isValid;
-    public string aesKey;
-    public bool isNewBusproGateway;
-    public string groupName;
-    public string projectName;
-    public string userName;
-
-    //app鑷畾涔夋暟鎹�
-    public string md5_mac_string;
-    public string LoginAccessToken;
-}
-
-namespace Shared.Securitys
-{
-    public partial class EncryptionService
+    public class MqttRemoteInfo
     {
+        public List<RemoteMACInfo> pageData;
 
-        #region 鍔犲瘑
-        /// <summary>
-        /// 鍔犲瘑涓婚涓築ase64
-        /// </summary>
-        /// <param name="pToEncrypt"></param>
-        /// <param name="key"></param>
-        /// <returns></returns>
-        public static string AesEncryptTopic(string pToEncrypt, string key)
-        {
-            if (string.IsNullOrEmpty(pToEncrypt)) return null;
-            if (string.IsNullOrEmpty(key)) return pToEncrypt;
-            //闇�瑕佸姞瀵嗗唴瀹圭殑鏄庢枃娴�
-            Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt);
+        public int pageIndex = 0;
+        public int pageSize = 10;
+        public int totalCount = 3;
+        public int totalPages = 1;
+        public bool hasPreviousPage = false;
+        public bool hasNextPage = false;
+    }
 
-            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-            RijndaelManaged rm = new RijndaelManaged
-            {
-                Key = Encoding.UTF8.GetBytes(key),
-                IV = Encoding.UTF8.GetBytes(key),
-                Mode = CipherMode.CBC,
-                Padding = PaddingMode.PKCS7
-            };
+    public class MqttInfo
+    {
+        public string connEmqDomainPort;
+        public string connEmqClientId;
+        public string connEmqUserName;
+        public string connEmqPwd;
 
-            //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
-            ICryptoTransform cTransform = rm.CreateEncryptor();
-
-            //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
-            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-
-            //灏咥ES鐢熸垚鐨勫瘑鏂囧瓧鑺傛暟缁勮浆鎴怋ase64瀛楃涓�
-            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
-        }
-
-
-        /// <summary>
-        /// 鍔犲瘑璐熻浇涓轰簩杩涘埗娴�
-        /// </summary>
-        /// <param name="toEncryptArray"></param>
-        /// <param name="key"></param>
-        /// <returns></returns>
-        public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key)
-        {
-            if (string.IsNullOrEmpty(key)) return toEncryptArray;
-            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-            var rm = new RijndaelManaged
-            {
-                Key = Encoding.UTF8.GetBytes(key),
-                IV = Encoding.UTF8.GetBytes(key),
-                Mode = CipherMode.CBC,
-                Padding = PaddingMode.PKCS7
-            };
-
-            //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
-            var cTransform = rm.CreateEncryptor();
-            //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
-            return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-        }
-        #endregion
-
-
-        #region 瑙e瘑
-        /// <summary>
-        /// 瑙e瘑涓婚鏁版嵁
-        /// </summary>
-        /// <param name="pToDecrypt"></param>
-        /// <param name="key"></param>
-        /// <returns></returns>
-        public static string AesDecryptTopic(string pToDecrypt, string key)
-        {
-            //AES瀵嗘枃Base64杞垚瀛楃涓�
-            Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt);
-
-            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-            RijndaelManaged rm = new RijndaelManaged
-            {
-                Key = Encoding.UTF8.GetBytes(key),
-                IV = Encoding.UTF8.GetBytes(key),
-                Mode = CipherMode.CBC,
-                Padding = PaddingMode.PKCS7
-            };
-
-            //鍒涘缓AES瑙e瘑鍣ㄥ璞�
-            ICryptoTransform cTransform = rm.CreateDecryptor();
-
-            //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
-            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-
-            //杞垚瀛楃涓�
-            return Encoding.UTF8.GetString(resultArray);
-        }
-
-        /// <summary>
-        /// 閲囩敤Aes瑙e瘑璐熻浇鏁版嵁
-        /// </summary>
-        /// <param name="toEncryptArray"></param>
-        /// <param name="key"></param>
-        /// <returns></returns>
-        public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key)
-        {
-            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-            var rm = new RijndaelManaged
-            {
-                Key = Encoding.UTF8.GetBytes(key),
-                IV = Encoding.UTF8.GetBytes(key),
-                Mode = CipherMode.CBC,
-                Padding = PaddingMode.PKCS7
-            };
-
-            //鍒涘缓AES瑙e瘑鍣ㄥ璞�
-            var cTransform = rm.CreateDecryptor();
-
-            //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
-            return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-        }
-        #endregion
-
+        public List<RemoteMACInfo> AccountAllGateways;
 
     }
-}
+
+    public class RemoteMACInfo
+    {
+        public string mac;
+        public string macMark;
+        public string isValid;
+        public string aesKey;
+        public bool isNewBusproGateway;
+        public string groupName;
+        public string projectName;
+        public string userName;
+
+        public string clientId;
+
+        //app鑷畾涔夋暟鎹�
+        public string md5_mac_string;
+        public string LoginAccessToken;
+    }
+
+    namespace Shared.Securitys
+    {
+        public partial class EncryptionService
+        {
+
+            #region 鍔犲瘑
+            /// <summary>
+            /// 鍔犲瘑涓婚涓築ase64
+            /// </summary>
+            /// <param name="pToEncrypt"></param>
+            /// <param name="key"></param>
+            /// <returns></returns>
+            public static string AesEncryptTopic(string pToEncrypt, string key)
+            {
+                if (string.IsNullOrEmpty(pToEncrypt)) return null;
+                if (string.IsNullOrEmpty(key)) return pToEncrypt;
+                //闇�瑕佸姞瀵嗗唴瀹圭殑鏄庢枃娴�
+                Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt);
+
+                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+                RijndaelManaged rm = new RijndaelManaged
+                {
+                    Key = Encoding.UTF8.GetBytes(key),
+                    IV = Encoding.UTF8.GetBytes(key),
+                    Mode = CipherMode.CBC,
+                    Padding = PaddingMode.PKCS7
+                };
+
+                //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
+                ICryptoTransform cTransform = rm.CreateEncryptor();
+
+                //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
+                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+
+                //灏咥ES鐢熸垚鐨勫瘑鏂囧瓧鑺傛暟缁勮浆鎴怋ase64瀛楃涓�
+                return Convert.ToBase64String(resultArray, 0, resultArray.Length);
+            }
+
+
+            /// <summary>
+            /// 鍔犲瘑璐熻浇涓轰簩杩涘埗娴�
+            /// </summary>
+            /// <param name="toEncryptArray"></param>
+            /// <param name="key"></param>
+            /// <returns></returns>
+            public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key)
+            {
+                if (string.IsNullOrEmpty(key)) return toEncryptArray;
+                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+                var rm = new RijndaelManaged
+                {
+                    Key = Encoding.UTF8.GetBytes(key),
+                    IV = Encoding.UTF8.GetBytes(key),
+                    Mode = CipherMode.CBC,
+                    Padding = PaddingMode.PKCS7
+                };
+
+                //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
+                var cTransform = rm.CreateEncryptor();
+                //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
+                return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+            }
+            #endregion
+
+
+            #region 瑙e瘑
+            /// <summary>
+            /// 瑙e瘑涓婚鏁版嵁
+            /// </summary>
+            /// <param name="pToDecrypt"></param>
+            /// <param name="key"></param>
+            /// <returns></returns>
+            public static string AesDecryptTopic(string pToDecrypt, string key)
+            {
+                //AES瀵嗘枃Base64杞垚瀛楃涓�
+                Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt);
+
+                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+                RijndaelManaged rm = new RijndaelManaged
+                {
+                    Key = Encoding.UTF8.GetBytes(key),
+                    IV = Encoding.UTF8.GetBytes(key),
+                    Mode = CipherMode.CBC,
+                    Padding = PaddingMode.PKCS7
+                };
+
+                //鍒涘缓AES瑙e瘑鍣ㄥ璞�
+                ICryptoTransform cTransform = rm.CreateDecryptor();
+
+                //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
+                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+
+                //杞垚瀛楃涓�
+                return Encoding.UTF8.GetString(resultArray);
+            }
+
+            /// <summary>
+            /// 閲囩敤Aes瑙e瘑璐熻浇鏁版嵁
+            /// </summary>
+            /// <param name="toEncryptArray"></param>
+            /// <param name="key"></param>
+            /// <returns></returns>
+            public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key)
+            {
+                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+                var rm = new RijndaelManaged
+                {
+                    Key = Encoding.UTF8.GetBytes(key),
+                    IV = Encoding.UTF8.GetBytes(key),
+                    Mode = CipherMode.CBC,
+                    Padding = PaddingMode.PKCS7
+                };
+
+                //鍒涘缓AES瑙e瘑鍣ㄥ璞�
+                var cTransform = rm.CreateDecryptor();
+
+                //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
+                return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+            }
+            #endregion
+
+
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0