Я використовую 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 <. Я використовував це так не так Тепер мій код працює як