Ejemplo n.º 1
0
        /// <summary>
        /// 解密正文并返回
        /// </summary>
        /// <param name="intType">int32的 加密类型</param>
        /// <param name="aesKeyDynamic">动态加密</param>
        /// <param name="ms">内存协议流</param>
        /// <returns></returns>
        private static byte[] InternalDecryptReturnContent(int intType, string aesKeyDynamic, MemoryStream ms)
        {
            //当前位置
            int currPos      = (int)ms.Position;
            int encTextCount = (int)ms.Length - currPos;

            byte[] retBytes = new byte[encTextCount];
            ms.Read(retBytes, 0, retBytes.Length);


            int currType = 1;

            EncryptType state;

            //这里的8是因为当前最大类别就是8
            while (currType <= 8)
            {
                if ((currType & intType) != 0)
                {
                    state = (EncryptType)currType;
                    switch (state)
                    {
                    case EncryptType.AES:

                        retBytes = Cipher_Aes.DecryptToBytes(retBytes, aesKeyDynamic);

                        break;

                    case EncryptType.Gzip:

                        retBytes = Cipher_Gzip.Decompress(retBytes);

                        break;

                    //纯文本,不需要解密
                    case EncryptType.PT:
                        break;

                    //最早判断,已经读取过了
                    case EncryptType.ResetKey:
                        break;
                    }
                }
                currType = currType << 1;
            }
            return(retBytes);
        }
Ejemplo n.º 2
0
 public static string DeGzip(this string input) => Encoding.UTF8.GetString(Cipher_Gzip.Decompress(Convert.FromBase64String(input)));