From c9e3a7f0c154892f2327e300e28af53f81e40ad0 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周四, 20 2月 2025 11:03:24 +0800 Subject: [PATCH] 软件加密+ 修复 不断给plc报警的问题 --- CC/iWareUnitTest/iWareUnitTest.csproj | 2 CC/iWareModel/iWareModel.csproj | 1 CC/iWareUnitTest/Entity/NewPasswordEntity.cs | 17 +++ CC/iWareUnitTest/CSharpTest.cs | 97 +++++++++++++++++++ CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs | 86 +++++++++++++++++ CC/iWareModel/Entity/WMS/ControlRequest.cs | 51 ++++++++++ CC/iWareCC_ASRS/ThreadService/03_BZ12(机器人码包工位)/1、DataProcess_BZ12.cs | 19 +++ CC/iWareUnitTest/Entity/PasswordGenerator.cs | 22 ++++ 8 files changed, 290 insertions(+), 5 deletions(-) diff --git a/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs b/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs index b0fd52f..83cb7be 100644 --- a/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs +++ b/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs @@ -15,7 +15,7 @@ using System.Threading; using System.Threading.Tasks; using XiGang.Core.Model; - +using LogType = iWareCommon.Utils.LogType; namespace iWareCC.Common.Helper { @@ -26,6 +26,90 @@ { /// <summary> + /// 鍏叡鐨勬帶鍒惰姹傚璞″瓧鍏� + /// </summary> + public static IDictionary<string, ControlRequest> controlRequestDicts = new Dictionary<string, ControlRequest>(); + + /// <summary> + /// 鍏叡鐨勬帶鍒惰姹傚璞″瓧鍏歌祴鍊� + /// </summary> + /// <param name="placeNo"></param> + /// <param name="result"></param> + /// <param name="msg"></param> + public static void SetValueControlRequestDicts(string placeNo, bool result, string msg) + { + if (controlRequestDicts.ContainsKey(placeNo)) + { + controlRequestDicts[placeNo].IsSuccess = result; + controlRequestDicts[placeNo].LastTime = DateTime.Now; + controlRequestDicts[placeNo].PlaceNo = placeNo; + if (result) + { + controlRequestDicts[placeNo].Count = 0; + controlRequestDicts[placeNo].ErrMsg = ""; + } + else + { + controlRequestDicts[placeNo].Count++; + controlRequestDicts[placeNo].ErrMsg = msg; + } + } + else + { + if (result) + { + controlRequestDicts.Add(placeNo, new ControlRequest() + { + PlaceNo = placeNo, + Count = 0, + LastTime = DateTime.Now, + ErrMsg = msg, + IsSuccess = result + }); + } + else + { + controlRequestDicts.Add(placeNo, new ControlRequest() + { + PlaceNo = placeNo, + Count = 1, + LastTime = DateTime.Now, + ErrMsg = msg, + IsSuccess = result + }); + } + } + } + + /// <summary> + /// 楠岃瘉鏄惁鍏佽缁橮LC鍙戞姤璀� + /// </summary> + /// <param name="placeNo"></param> + /// <returns></returns> + public static bool ValidateIsAllowRequest(string placeNo, LogType logType) + { + if (controlRequestDicts.ContainsKey(placeNo)) + { + if (controlRequestDicts[placeNo].IsSuccess == false) + { + //var diff = DateTime.Now - controlRequestDicts[placeNo].LastTime; + //if (diff.Seconds <= 10) + //{//濡傛灉杩炵画璇锋眰鍦�10绉掑唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹� + // WZ.Useful.Commons.LogTextHelper.WriteLine("CommonControl", "ValidateIsAllowRequest", "濡傛灉杩炵画璇锋眰鍦�10绉掑唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹傦紝闂撮殧" + diff.Seconds + "绉�,placeNo:" + placeNo); + // return false; + //} + if (controlRequestDicts[placeNo].Count <= 5) + {//濡傛灉杩炵画璇锋眰鍦�5娆″唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹� + var msg = "濡傛灉杩炵画璇锋眰鍦�5娆″唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹傦紝闂撮殧" + controlRequestDicts[placeNo].Count + "涓�,placeNo:" + placeNo; + Log4NetHelper.WriteInfoLog(logType, msg); + return false; + } + } + } + return true; + } + + /// <summary> /// 鐢熸垚鏈�鏂扮殑浠诲姟鍙� /// </summary> /// <param name="wmsDB"></param> diff --git "a/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs" "b/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs" index 49ed06d..deb05cc 100644 --- "a/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs" +++ "b/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs" @@ -69,7 +69,7 @@ } var upiCode = result.Replace("/r", ""); ; short lastnum = 0;//鏄惁鏈澘 - + string place = ""; using (WmsDBModel wmsDB = new WmsDBModel()) { @@ -105,12 +105,23 @@ //placeZ = (short)upiObj.MachineZCenter; if (upiObj.UpiStatus == (int)UpiStatusEnum.宸茬爜鍨� || upiObj.UpiStatus == (int)UpiStatusEnum.鐮佸灈涓�) { - //鍐欏叆鎶ヨ淇℃伅 - await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_3); - SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}鐘舵�佸凡鏄�'宸茬爜鍨�'鎴�'鐮佸灈涓�' "; + MyExtendHelper.SetValueControlRequestDicts(PlcWarningAddressGloble.Num_BZ12_3, false, SystemWarningMsg._lbl_alert_DataProcess_BZ12); + + var isAllow = MyExtendHelper.ValidateIsAllowRequest(PlcWarningAddressGloble.Num_BZ12_3, LogType.DataProcess_BZ12); + if (isAllow == false) + { + continue; + } + else + { + //鍐欏叆鎶ヨ淇℃伅 + await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_3); + } + continue; } + MyExtendHelper.SetValueControlRequestDicts(PlcWarningAddressGloble.Num_BZ12_3, true, ""); upiObj.UpiStatus = (int)UpiStatusEnum.鐮佸灈涓�; upiObj.AreaCode = (int)AreaCodeEnum.鐮佸灈鍖哄煙; //鏌ュ杩欏寘鎵�鏈夌殑鏁伴噺 diff --git a/CC/iWareModel/Entity/WMS/ControlRequest.cs b/CC/iWareModel/Entity/WMS/ControlRequest.cs new file mode 100644 index 0000000..9e76c8a --- /dev/null +++ b/CC/iWareModel/Entity/WMS/ControlRequest.cs @@ -0,0 +1,51 @@ +锘�// 楹荤渷鐞嗗伐瀛﹂櫌璁稿彲璇� +// +// 鐗堟潈鎵�鏈� (c) 2021-2023 zuohuaijun锛屽ぇ鍚嶇鎶�锛堝ぉ娲ワ級鏈夐檺鍏徃 鑱旂郴鐢佃瘽/寰俊锛�18020030720 QQ锛�515096995 +// +// 鐗规鍏嶈垂鎺堜簣鑾峰緱鏈蒋浠剁殑浠讳綍浜轰互澶勭悊鏈蒋浠剁殑鏉冨埄锛屼絾椤婚伒瀹堜互涓嬫潯浠讹細鍦ㄦ墍鏈夊壇鏈垨閲嶈閮ㄥ垎鐨勮蒋浠朵腑蹇呴』鍖呮嫭涓婅堪鐗堟潈澹版槑鍜屾湰璁稿彲澹版槑銆� +// +// 杞欢鎸夆�滃師鏍封�濇彁渚涳紝涓嶆彁渚涗换浣曞舰寮忕殑鏄庣ず鎴栨殫绀虹殑淇濊瘉锛屽寘鎷絾涓嶉檺浜庡閫傞攢鎬с�侀�傜敤鎬у拰闈炰镜鏉冪殑淇濊瘉銆� +// 鍦ㄤ换浣曟儏鍐典笅锛屼綔鑰呮垨鐗堟潈鎸佹湁浜哄潎涓嶅浠讳綍绱㈣禂銆佹崯瀹虫垨鍏朵粬璐d换璐熻矗锛屾棤璁烘槸鍥犲悎鍚屻�佷镜鏉冩垨鍏朵粬鏂瑰紡寮曡捣鐨勶紝涓庤蒋浠舵垨鍏朵娇鐢ㄦ垨鍏朵粬浜ゆ槗鏈夊叧銆� + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace XiGang.Core.Model +{ + + /// <summary> + /// 鎺у埗澶勭悊璇锋眰瀵硅薄 + /// 闃叉PLC涓嶅仠鍦拌皟鐢紝瀵艰嚧鏁版嵁搴撴閿佺殑闂 + /// </summary> + public class ControlRequest + { + /// <summary> + /// 璇锋眰杩斿洖缁撴灉 + /// </summary> + public bool IsSuccess { get; set; } + + /// <summary> + /// 璁$畻娆℃暟 + /// </summary> + public int Count { get; set; } + + /// <summary> + /// 搴撲綅缂栧彿 + /// </summary> + public string PlaceNo { get; set; } + + /// <summary> + /// 閿欒娑堟伅 + /// </summary> + public string ErrMsg { get; set; } + + /// <summary> + /// 鏈�鍚庢洿鏂版椂闂� + /// </summary> + public DateTime LastTime { get; set; } + + } +} \ No newline at end of file diff --git a/CC/iWareModel/iWareModel.csproj b/CC/iWareModel/iWareModel.csproj index 1965c43..a7d8fb1 100644 --- a/CC/iWareModel/iWareModel.csproj +++ b/CC/iWareModel/iWareModel.csproj @@ -78,6 +78,7 @@ <Compile Include="Entity\ValidateModel.cs" /> <Compile Include="Entity\ValidateResModel.cs" /> <Compile Include="Entity\WMS\AddMainTaskPostParam.cs" /> + <Compile Include="Entity\WMS\ControlRequest.cs" /> <Compile Include="Entity\WMS\UpdateEngineInfoParam.cs" /> <Compile Include="EnumType\EDbError.cs" /> <Compile Include="EnumType\EDevice\AGV\AGVState.cs" /> diff --git a/CC/iWareUnitTest/CSharpTest.cs b/CC/iWareUnitTest/CSharpTest.cs index 95d88a3..cf17e50 100644 --- a/CC/iWareUnitTest/CSharpTest.cs +++ b/CC/iWareUnitTest/CSharpTest.cs @@ -1,6 +1,7 @@ 锘� using iWareCommon.Utils; using iWareSql.DBModel; +using iWareUnitTest.Entity; using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; using System; @@ -140,6 +141,98 @@ var txt1 = DESEncryptHelper.Encrypt("2025-02-25");//125B1E37E4C1F3C8DD1F36B342ED1307 var txt2 = DESEncryptHelper.Encrypt("2025-03-30");//45BAF941111384BEE21F89FD18461EC1 + List<NewPasswordEntity> list = new List<NewPasswordEntity>(); + var startDate = DateTime.Parse("2025-04-25"); + for (int i = 0; i < 11; i++) + { + var newPass = PasswordGenerator.GenerateRandomPassword(7); + var _date = startDate.ToString("yyy-MM-dd"); + startDate = startDate.AddMonths(1); + list.Add(new NewPasswordEntity + { + date = _date, + password = newPass, + encrypt_date = DESEncryptHelper.Encrypt(_date), + encrypt_password = DESEncryptHelper.Encrypt(newPass) + }); + } + StringBuilder sb = new StringBuilder(); + foreach (var item in list) + { + sb.Append(item.date + "\r\n"); + } + sb.Append("鍒嗗壊鍝�" + "\r\n"); + foreach (var item in list) + { + sb.Append(item.password + "\r\n"); + } + sb.Append("鍒嗗壊鍝�" + "\r\n"); + foreach (var item in list) + { + sb.Append(item.encrypt_date + "\r\n"); + } + sb.Append("鍒嗗壊鍝�" + "\r\n"); + foreach (var item in list) + { + sb.Append(item.encrypt_password + "\r\n"); + } + + + var cc = sb.ToString(); + + + var txt4 = DESEncryptHelper.Encrypt("2025-04-25"); + var txt5 = DESEncryptHelper.Encrypt("2025-05-25"); + var txt6 = DESEncryptHelper.Encrypt("2025-06-25"); + var txt7 = DESEncryptHelper.Encrypt("2025-07-25"); + var txt8 = DESEncryptHelper.Encrypt("2025-08-25"); + var txt9 = DESEncryptHelper.Encrypt("2025-09-25"); + var txt10 = DESEncryptHelper.Encrypt("2025-10-25"); + var txt11 = DESEncryptHelper.Encrypt("2025-11-25"); + var txt12 = DESEncryptHelper.Encrypt("2025-12-25"); + var txt13 = DESEncryptHelper.Encrypt("2026-01-25"); + var txt14 = DESEncryptHelper.Encrypt("2026-02-25"); + + sb.Append(txt4 + "\r\n"); + sb.Append(txt5 + "\r\n"); + sb.Append(txt6 + "\r\n"); + sb.Append(txt7 + "\r\n"); + sb.Append(txt8 + "\r\n"); + sb.Append(txt9 + "\r\n"); + sb.Append(txt10 + "\r\n"); + sb.Append(txt11 + "\r\n"); + sb.Append(txt12 + "\r\n"); + sb.Append(txt13 + "\r\n"); + sb.Append(txt14 + "\r\n"); + + sb.Append("鍒嗗壊鍝�" + "\r\n"); + + var password_txt4 = DESEncryptHelper.Encrypt("8567sdc"); + var password_txt5 = DESEncryptHelper.Encrypt("2025yyc"); + var password_txt6 = DESEncryptHelper.Encrypt("jjkljlue5"); + var password_txt7 = DESEncryptHelper.Encrypt("jh3njdi3"); + var password_txt8 = DESEncryptHelper.Encrypt("jkncy632d"); + var password_txt9 = DESEncryptHelper.Encrypt("kjl3oi8j4"); + var password_txt10 = DESEncryptHelper.Encrypt("9i438d6"); + var password_txt11 = DESEncryptHelper.Encrypt("0934kydht"); + var password_txt12 = DESEncryptHelper.Encrypt("23hd6f"); + var password_txt13 = DESEncryptHelper.Encrypt("8uj47d6d"); + var password_txt14 = DESEncryptHelper.Encrypt("jjy74jdc3"); + + sb.Append(password_txt4 + "\r\n"); + sb.Append(password_txt5 + "\r\n"); + sb.Append(password_txt6 + "\r\n"); + sb.Append(password_txt7 + "\r\n"); + sb.Append(password_txt8 + "\r\n"); + sb.Append(password_txt9 + "\r\n"); + sb.Append(password_txt10 + "\r\n"); + sb.Append(password_txt11 + "\r\n"); + sb.Append(password_txt12 + "\r\n"); + sb.Append(password_txt13 + "\r\n"); + sb.Append(password_txt14 + "\r\n"); + + + var to_txt = DESEncryptHelper.Decrypt("C3F3DD5F2C816041775DB87739E1F729");// var to_txt1 = DESEncryptHelper.Decrypt("125B1E37E4C1F3C8DD1F36B342ED1307");// @@ -155,6 +248,10 @@ var test_txt = DESEncryptHelper.Encrypt("2024-12-19");//46039E400A485A5B383F51212D562772 var test_txt2 = DESEncryptHelper.Encrypt("2024-12-25");//46039E400A485A5B80BA4C2C44FEA6AF + + to_txt2 = DESEncryptHelper.Decrypt("CB32534E34DD3273FCEA68A19F06C37F");// + to_txt2 = DESEncryptHelper.Decrypt("69D40723281D3406");// + Assert.IsFalse(false); } diff --git a/CC/iWareUnitTest/Entity/NewPasswordEntity.cs b/CC/iWareUnitTest/Entity/NewPasswordEntity.cs new file mode 100644 index 0000000..fe7def2 --- /dev/null +++ b/CC/iWareUnitTest/Entity/NewPasswordEntity.cs @@ -0,0 +1,17 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace iWareUnitTest.Entity +{ + public class NewPasswordEntity + { + public string date { get; set; } + public string password { get; set; } + + public string encrypt_date { get; set; } + public string encrypt_password { get; set; } + } +} diff --git a/CC/iWareUnitTest/Entity/PasswordGenerator.cs b/CC/iWareUnitTest/Entity/PasswordGenerator.cs new file mode 100644 index 0000000..f1079b0 --- /dev/null +++ b/CC/iWareUnitTest/Entity/PasswordGenerator.cs @@ -0,0 +1,22 @@ +锘縰sing System; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading; + +public class PasswordGenerator +{ + //private const string ValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"; + private const string ValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + private static readonly RandomNumberGenerator _rng = RandomNumberGenerator.Create(); + private static readonly object _lock = new object(); // 鐢ㄤ簬绾跨▼瀹夊叏 + private static readonly char[] _chars = ValidChars.ToCharArray(); // 棰勫姞杞藉瓧绗︽暟缁勪互鎻愰珮鎬ц兘 + private static readonly int _validCharsLength = ValidChars.Length; // 棰勫姞杞介暱搴︿互鎻愰珮鎬ц兘 + private static readonly byte[] _randomBytesBuffer = new byte[4]; // 鐢ㄤ簬鐢熸垚闅忔満鏁颁互鍒濆鍖朢andom瀵硅薄锛堝彲閫夛紝鍙栧喅浜庨渶姹傦級 + private static readonly Random _random = new Random(); // 浠呬负鍒濆鍖朢andom瀵硅薄锛堝彲閫夛紝鍙栧喅浜庨渶姹傦級 + private static readonly ThreadLocal<Random> _threadRandom = new ThreadLocal<Random>(() => new Random(BitConverter.ToInt32(GetRandomBytes(), 0))); // 绾跨▼瀹夊叏鐨凴andom瀵硅薄锛堝彲閫夛紝鍙栧喅浜庨渶姹傦級 + private static byte[] GetRandomBytes() { lock (_lock) { _rng.GetBytes(_randomBytesBuffer); return _randomBytesBuffer; } } // 鑾峰彇闅忔満瀛楄妭鏁扮粍鐨勬柟娉曪紝纭繚绾跨▼瀹夊叏銆傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互绉婚櫎lock銆� + private static int GetRandomInt(int maxValue) => _threadRandom.Value.Next(maxValue); // 浣跨敤绾跨▼瀹夊叏鐨凴andom瀵硅薄鑾峰彇闅忔満鏁存暟銆傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互浣跨敤鏅�氱殑_random.Next(maxValue)銆� + private static char GetRandomChar() => _chars[GetRandomInt(_validCharsLength)]; // 鑾峰彇闅忔満瀛楃銆傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互浣跨敤_chars[random.Next(_validCharsLength)]銆� + public static string GenerateRandomPassword(int length) => new string(Enumerable.Range(0, length).Select(_ => GetRandomChar()).ToArray()); // 鐢熸垚瀵嗙爜瀛楃涓层�傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互鐩存帴浣跨敤_chars[random.Next(_validCharsLength)]銆� +} \ No newline at end of file diff --git a/CC/iWareUnitTest/iWareUnitTest.csproj b/CC/iWareUnitTest/iWareUnitTest.csproj index fdfef53..2e2e300 100644 --- a/CC/iWareUnitTest/iWareUnitTest.csproj +++ b/CC/iWareUnitTest/iWareUnitTest.csproj @@ -69,6 +69,8 @@ </Choose> <ItemGroup> <Compile Include="CSharpTest.cs" /> + <Compile Include="Entity\PasswordGenerator.cs" /> + <Compile Include="Entity\NewPasswordEntity.cs" /> <Compile Include="OPCTest.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Service References\MesWebService\Reference.cs"> -- Gitblit v1.9.3