Закрытие приложения FlushFinalBlock
Я использую CryptoStream
для расшифровки зашифрованного текста в моем приложении. Но когда я дохожу до того, что либо стираю последний блок из потока, либо закрываю его (что должно сделать то же самое), приложение закрывается.
Там нет сообщения об ошибке, ничего. Даже в режиме отладки это просто заканчивается. В средстве просмотра событий Windows я получаю .NET Runtime version 2.0.50727.5485 - Fatal Execution Engine Error (000007FEECCD600A) (80131506)
, Я ориентируюсь на Framework 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 бит.
1 ответ
'Используйте криптопоток, чтобы записать байтовый массив в поток.
decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
О, МОЙ..... последний параметр>encrytedBytes.lengt<. Я использовал это так неправильно Теперь мой код работает как