/// <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); }
public static string DeGzip(this string input) => Encoding.UTF8.GetString(Cipher_Gzip.Decompress(Convert.FromBase64String(input)));