Закрытие приложения 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<. Я использовал это так неправильно Теперь мой код работает как

Другие вопросы по тегам