файл слова (doc, docx) поврежден после шифрования и дешифрования - PullRequest
0 голосов
/ 01 июня 2018

Я попробовал следующий код для шифрования и дешифрования файлов с использованием asp.net c # rijndael удалось.все изображения блокнота зашифрованы и успешно расшифрованы, когда дело доходит до файла doc или docx, он всегда показывает поврежденный файл, когда я пытался открыть.но если я нажму решить эту проблему в Microsoft Word, то файл вернется.что может пойти не так в коде.пожалуйста, помогите мне

    public void EncryptFile(string password, string inputFile, string outputFile)
    {

        try
        {

            UnicodeEncoding UE = new UnicodeEncoding();
            byte[] key = UE.GetBytes(password.Trim());

            string cryptFile = outputFile;
            FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

            RijndaelManaged RMCrypto = new RijndaelManaged();

            CryptoStream cs = new CryptoStream(fsCrypt,
                RMCrypto.CreateEncryptor(key, key),
                CryptoStreamMode.Write);

            FileStream fsIn = new FileStream(inputFile, FileMode.Open);

            int data;
            while ((data = fsIn.ReadByte()) != -1)
                cs.WriteByte((byte)data);


            fsIn.Close();
            cs.Close();
            fsCrypt.Close();
        }
        catch(Exception err)
        {
            System.Diagnostics.Debug.WriteLine(err);
        }
    }

    public void DecryptFile(string password, string inputFile, string outputFile)
    {
        try
        {


            UnicodeEncoding UE = new UnicodeEncoding();
            byte[] key = UE.GetBytes(password.Trim());

            FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);

            RijndaelManaged RMCrypto = new RijndaelManaged();

            CryptoStream cs = new CryptoStream(fsCrypt,
                RMCrypto.CreateDecryptor(key, key),
                CryptoStreamMode.Read);

            FileStream fsOut = new FileStream(outputFile, FileMode.Create);

            int data;
            while ((data = cs.ReadByte()) != -1)
                fsOut.WriteByte((byte)data);

            fsOut.Close();
            cs.Close();
            fsCrypt.Close();
        }
        catch(Exception err)
        {
            System.Diagnostics.Debug.WriteLine(err);
        }

    }
...