/ / Zavrieť aplikáciu FlushFinalBlock - vb.net, visual-studio-2008, cryptography, cryptostream

FlushFinalBlock zavrieť aplikáciu - vb.net, visual-studio-2008, cryptography, cryptostream

Používam CryptoStream na dešifrovanie šifrovaného textu v mojej aplikácii. Ale keď sa dostanem do bodu buď vypláchnuť posledný blok z prúdu alebo zatvoriť (čo by malo robiť to isté), aplikácia sa zatvorí.

Neexistuje žiadne chybové hlásenie, nič. Aj v režime ladenia to jednoducho končí. V systéme Windows Event Viewer získam .NET Runtime version 2.0.50727.5485 - Fatal Execution Engine Error (000007FEECCD600A) (80131506), Ja sa zameriavam na rámec 2.0 s aplikáciou.

Tu je môj kód:

    Public Function DecryptData(ByVal encryptedtext As String) As String
Try
" Convert the encrypted text string to a byte array.
Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)

" Create the stream.
Dim ms As New System.IO.MemoryStream
" Create the decoder to write to the stream.
Dim decStream As New CryptoStream(ms, TripleDes.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write)

" Use the crypto stream to write the byte array to the stream.
decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
decStream.FlushFinalBlock()

" Convert the plaintext stream to a string.
Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
Catch ex As System.Security.Cryptography.CryptographicException
Return ""
End Try
End Function

Snažil som sa nahradiť decStream.FlushFinalBlock() s decStream.Close(), a dostal to isté. Keď to komentujem, reťazec, ktorý vracia, obsahuje iba násobok 8 znakov. Zvyšok, uviaznutý v tomto konečnom bloku, zmizne.

Takže sa snažím zistiť, prečo chytiť poslednýprúdu zatvorí aplikáciu smerom nadol. Dala som prerušenie na mieste zdroja a použil som F11, aby som sa dostal do nej, ale vypnutie je okamžité.

Používam VS 2008 na Windows 7 Professional 64 bit.

odpovede:

0 pre odpoveď č. 1

"Použite kryptografický tok na zápis poľa byte do streamu.

    decStream.Write(encryptedBytes, 0, encryptedBytes.Length)

OH MY ..... posledný parameter> encrytedBytes.lengt <. Používal som to sooo wrong Teraz môj kód funguje ako