/ / Закриття програми FlushFinalBlock - vb.net, візуальна студія-2008, криптографія, криптострій

Закриття програми FlushFinalBlock - vb.net, visual studio-2008, криптографія, криптострим

Я використовую CryptoStream для розшифровки зашифрованого тексту в моєму додатку. Але коли я підхоплююсь до того, як промити остаточний блок із потоку або закрити його (який повинен робити те ж саме), додаток закривається.

Немає повідомлення про помилку, нічого. Навіть у режимі налагодження він просто закінчується. У програмі перегляду подій Windows я отримую .NET Runtime version 2.0.50727.5485 - Fatal Execution Engine Error (000007FEECCD600A) (80131506). Я націлюю раму 2.0 з додатком.

Ось мій код:

    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

Я намагався замінити decStream.FlushFinalBlock() з decStream.Close(), і отримав те ж саме. Коли я коментую його, рядок, який він повертає, містить лише кілька символів із 8 символів. Залишок, що застряг у цьому остаточному блоці, зникає.

Тому я намагаюся зрозуміти, чому захоплюю останнюпотоку закриває програму. Я встановив точку зупинки в місці джерела та використовував F11, щоб входити в неї, але закриття це негайно.

Я використовую VS 2008 на Windows 7 Professional 64 біт.

Відповіді:

0 для відповіді № 1

"Використовуйте криптопоток, щоб написати масив байтів у потоці.

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

ОН Я ... останній параметр> encrytedBytes.lengt <. Я використовував це так не так Тепер мій код працює як