Rijndael MemoryStream problem

0

hej,
probuje zaszyfrować plik AES'em i wrzucić go to MemoryStream, a następnie wrzucić do pliku i niestety gubi kilka bajtów, np: dla pliku 133bajty po zaszyfrowaniu powinien mieć 144, a ma 128bajty, problem występuje wyłącznie gdy używam MemoryStream. jakoś nie mogę znaleźć problemu?

 Console.WriteLine("Podaj haslo 8 znakow");
            //pobieramy haslo 8 znakow
            string p = Console.ReadLine();

            UnicodeEncoding ue = new UnicodeEncoding();
            //zamieniamy haslo na tablice byt'ow
            byte[] key = ue.GetBytes(p);

            ////wyjsciowey
            MemoryStream ms = new MemoryStream();

            RijndaelManaged RMCrypto = new RijndaelManaged();

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


            //wejsciowy
            FileStream gs = new FileStream("wejscie.txt", FileMode.Open);

            //owijamy czytanie
            BinaryWriter bw = new BinaryWriter(cs);

            //owijamy wejsciowy
            BinaryReader br = new BinaryReader(gs);

            //ilosc bajtow:
            int ilosc = 1024;
            byte[] buffer = new Byte[ilosc];
            int czytaneBajty;

            while ((czytaneBajty = br.Read(buffer, 0, ilosc)) > 0)
            {
                bw.Write(buffer, 0, czytaneBajty);
            }
            FileStream wyj = new FileStream("plik12.txt", FileMode.Create);
            byte[] q = ms.GetBuffer();
            ms.WriteTo(wyj);


            wyj.Close();
            br.Close();
            gs.Close();
            cs.Close();
            ms.Close();

pozdrawiam

0

Spróbuj zamknąć strumień kryptograficzny przed pobraniem danych z MemoryStream, albo Flush'nąć go.

0

hym zauważyłem ze sypie sie samo wczytywanie, jeśli mam plik 133bajty i tak wczyta tylko 128 ;/ i tak zawsze ucina kilka bajtów nie wiem czemu tak sie dzieje, jakieś propozycje?

while ((czytaneBajty = br.Read(buffer, 0, ilosc)) > 0)
            {
                bw.Write(buffer, 0, czytaneBajty);
            }

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1