新聞速報

        

2022年12月21日 星期三

自定義 加密/解密 涵式

         /// <summary>
        /// 解碼 CP定義 的 加密資料
        /// 最左邊字元為 "("   最右邊為 ")" ,則視為  加密資料 則為 加密資料,就自動解密 回填
        /// 否則 直接返回 原字串        
        /// </summary>
        /// <param name="strData"></param>
        /// <returns></returns>
        public static string DeCode_CP密文資料(string strData)
        {
            strData = strData.Trim();
            if (strData.Length > 0)
            {
                if (strData.Substring(0, 1) == "(" 
                    && strData.Substring(strData.Length - 1, 1) == ")")
                {
                    //進行 CP定義的格式 解密
                    string BASE64_strTmp = strData.Substring(1, (strData.Length - 1) - 1);  //去除 前後括號
                    //AES 解密
                    string tmp = AES_decrypt(BASE64_strTmp, "WOWOW");      //KEYWORD = "WOWOW"
                    //去除  頭/尾  3碼  亂數字串
                    if (strData.Length > 6)
                    {
                        strData = tmp.Substring(3, (tmp.Length - 3) - 3);
                    }
                }
            }
            return strData;
        }

        /// <summary>
        /// 加密 CP定義 的 加密資料
        /// 最左邊字元為 "("   最右邊為 ")" ,則視為  已加密資料 直接返回 原字串   
        /// 否則  將輸入資料 進行加密 , 並加入最左邊字元為 "("   最右邊為 ")"  回填      
        /// </summary>
        /// <param name="strData"></param>
        /// <returns></returns>
        public static string EnCode_CP密文資料(string strData)
        {
            strData = strData.Trim();
            if (strData.Length > 0)
            {
                if (strData.Substring(0, 1) == "("
                    && strData.Substring(strData.Length - 1, 1) == ")")
                {
                    //已加密
                    //不進行處理
                }
                else
                {
                    Thread.Sleep(10);
                    Random r = new Random(Environment.TickCount);
                    //尚未 加密,原始字串 頭/尾 各加入 3碼 亂數字串
                    string tmp = r.Next(0, 999).ToString().PadLeft(3, '0')
                                + strData
                                + r.Next(0, 999).ToString().PadLeft(3, '0');

                    //進行 加密
                    tmp = AES_encrypt(tmp, "WOWOW");
                    //string ttt = AES_decrypt(tmp, "WOWOW");
                    //並加入最左邊字元為 "("   最右邊為 ")"
                    strData = "(" + tmp + ")";
                }
            }
            return strData;
        }

沒有留言:

張貼留言