C# AES加密后缺少GZip幻数

C# AES加密后缺少GZip幻数,c#,encryption,compression,aes,gzipstream,C#,Encryption,Compression,Aes,Gzipstream,我使用GZip压缩一个文件,然后使用AES加密 当我逐步浏览代码时,我看到中间压缩的未加密数据中存在幻数(1f 8b),然后文件被加密。当我去解密文件时,中间解密的压缩数据不包含幻数,并且GZipStream在解压缩时失败 以下是主要代码: private static void CompressThenEncrypt(string inputFileName, string outputFileName, ICryptoTransform encryptor) {

我使用GZip压缩一个文件,然后使用AES加密

当我逐步浏览代码时,我看到中间压缩的未加密数据中存在幻数(1f 8b),然后文件被加密。当我去解密文件时,中间解密的压缩数据不包含幻数,并且GZipStream在解压缩时失败

以下是主要代码:

    private static void CompressThenEncrypt(string inputFileName, string outputFileName, ICryptoTransform encryptor)
    {
        using (var inputFileStream = new FileStream(inputFileName, FileMode.Open, FileAccess.Read))
        {
            using (var outputFileStream = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
            using (var cryptoStream = new CryptoStream(outputFileStream, encryptor, CryptoStreamMode.Write))
            {
                using (var gZipStream = new GZipStream(cryptoStream, CompressionMode.Compress))
                {
                    inputFileStream.CopyTo(gZipStream);
                }
            }
        }
    }

    private static void DecryptThenDecompress(string inputFileName, string outputFileName, ICryptoTransform decryptor)
    {
        using (var inputFileStream = new FileStream(inputFileName, FileMode.Open, FileAccess.Read))
        {
            using (var cryptoStream = new CryptoStream(inputFileStream, decryptor, CryptoStreamMode.Read))
            using (var gZipStream = new GZipStream(cryptoStream, CompressionMode.Decompress))
            using (var outputFileStream = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
            {
                gZipStream.CopyTo(outputFileStream);
            }
        }
    }
源文件是19000字节。压缩后它变成603字节(带有幻数),然后加密后它变成608字节(由于填充)。当解密后,它变成603字节(没有魔法数字),我简直无法超越这一点

以下是呼叫代码:

        using (var aes = new AesCryptoServiceProvider())
        {
            ICryptoTransform encryptor = aes.CreateEncryptor();
            ICryptoTransform decryptor = aes.CreateDecryptor();

            CompressThenEncrypt(OriginalFileName, CompressThenEncryptFileName, encryptor);

            DecryptThenDecompress(CompressThenEncryptFileName, DecryptThenDecompressFileName, decryptor);
        }
编辑:更多信息

压缩数据(603字节): 4)动词动词动词动词(1)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-D4-44-7D-3F-A6-A4-8A-30-E6-02-00

加密数据(608字节): (2)2)2)2)2)2)2)2)2)2)2)2)2)2)6)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)7)A)A)A)A)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)A(2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)A-92-0A-82-D9-DD-4E-46-DF-55-2E-EB-34-AC-98-1A-7E-A9-25-94-2D-E8-32-4B-F9-2A-61-64-CB-09-9C-D5-8C-A2-0A-C1-22-94)2)B)B)B(3)B(3)B(3)B(3)B(3)B(2)B(2)2)B(2)B(4)5)B(4)5)5)B(5)5)5)5)B(5)5)5)5)B(5)5)B(4)5)B)B(5)5)B(5)5)B(5)5)5)B(5)5)B(5)5)5)B(5)5)5)B(5)5)5)B(5)5)5)5)5)5)5)B(5)5)5)5)5)B(5)5)B(5)5)5)5)5)B(5)5)5)B(5)5)5)5)5)5)B(5)5)5)5)5)5)5)5)5)5)5)5)5)5)5)5 3B-E0-E8-F8-35-BF-90-24-00-DC-47-09-66-92-2F-43-92-48-CB-42-4C-3C-86-CC-67-33-62-A1-1E-76-D1-D6-AD-5F-50-4-4-4 4-4-4 4-4 4-4-4-4-4-4-4-7-4-4-7-7-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-A-AC-BF-76-EA-D6-C8-05-22-54-4B-71-73-F2-FD-8E-6E-D7-D2-F2-F7-83-B3-9F-75-3C-CA-BA-BD-F3-C2-E6-16-37-9E-4)A)B B B B B B B B B A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A 08-A2-90-9D-21-5E-E4-5E-E6-1D-66-7D-F5-E1-FC-3C-F1-DE-76-68-D7-1D-46-70-A5-32-31-2B-F5-02-6A-E4-95-CD-8E-B8-76)C)C)C)C(C)C)C(6)C(C)C)C(6)C)C(C)C)C(6)C)C(C)C)C(7)C)C(7)C)C)C(7)C)C)C(7)C)C)C)C)C(7)C)C)C)C)C(7)C)C)C(7)C)C)C)C(7)C)C)C)C(7)C)C)C)C)C)C)C)C)C)C)C)C(7)C)C)C)C)C)C)C)C(7)C)C)C)C)C)C(7)C)C(7)C)C(7)C)C)C)C(7)C)C)C)C)C)C(7)C(7)C)C)C)C)C)C(7)C)C A-30-25-E7-FF-D9-BC-DA-A7-87-65-1A-1E-83-55-D2-60-38-EC-51-97-FA-FD-11-70-83-70-66-39-78-47-93-7C-B7-FB-48-96-2F-C6-1E-6E-7D-29-38-F6-AB-06-45-C5-F7-50-D6-C7-44-5C-AB-96-A0-60-7D-0E-63-4E-B2-EA

解密数据(603字节): 4)C(4)4)4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-45-51-14-4
using (var aes = new AesCryptoServiceProvider())
{
      ICryptoTransform encryptor = aes.CreateEncryptor();
      ICryptoTransform decryptor = aes.CreateDecryptor(); // <-- Decryptor fails on second usage

      // Compress/ Encrypt
      CompressThenEncrypt(OriginalFileName, CompressThenEncryptFileName, encryptor);
      EncryptThenCompress(OriginalFileName, EncryptThenCompressFileName, encryptor);

      // Decrypt/ Decompress
      DecompressThenDecrypt(EncryptThenCompressFileName, DecompressThenDecryptFileName, decryptor);
      DecryptThenDecompress(CompressThenEncryptFileName, DecryptThenDecompressFileName, decryptor);
}
using (var aes = new AesCryptoServiceProvider())
{
      ICryptoTransform encryptor = aes.CreateEncryptor();
      ICryptoTransform decryptor = aes.CreateDecryptor();
      ICryptoTransform decryptor2 = aes.CreateDecryptor();

      // Compress/ Encrypt
      CompressThenEncrypt(OriginalFileName, CompressThenEncryptFileName, encryptor);
      EncryptThenCompress(OriginalFileName, EncryptThenCompressFileName, encryptor);

      // Decrypt/ Decompress
      DecompressThenDecrypt(EncryptThenCompressFileName, DecompressThenDecryptFileName, decryptor);
      DecryptThenDecompress(CompressThenEncryptFileName, DecryptThenDecompressFileName, decryptor2);
}