/ / FlushFinalBlock aplicación de cierre - vb.net, visual-studio-2008, criptografía, cryptostream

Aplicación de cierre FlushFinalBlock - vb.net, visual-studio-2008, criptografía, cryptostream

Estoy usando CryptoStream para descifrar texto cifrado en mi aplicación. Pero cuando llego al punto de vaciar el bloque final de la secuencia o cerrarlo (que debería hacer lo mismo), la aplicación se cierra.

No hay mensaje de error, nada. Incluso en el modo de depuración, simplemente termina. En el Visor de eventos de Windows, obtengo .NET Runtime version 2.0.50727.5485 - Fatal Execution Engine Error (000007FEECCD600A) (80131506). Estoy apuntando framework 2.0 con la aplicación.

Aquí está mi código:

    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

Traté de reemplazar decStream.FlushFinalBlock() con decStream.Close(), y consiguió lo mismo. Cuando lo comento, la cadena que devuelve contiene solo un múltiplo de 8 caracteres. El resto, atascado en ese bloque final, desaparece.

Así que estoy tratando de averiguar por qué agarrando el últimoDe la secuencia está cerrando la aplicación. Puse un punto de interrupción en la ubicación de origen y usé F11 para ingresar, pero el cierre es inmediato.

Estoy usando VS 2008 en Windows 7 Professional 64 bit.

Respuestas

0 para la respuesta № 1

"Use el flujo criptográfico para escribir la matriz de bytes en el flujo.

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

OH MY ..... el último parámetro> encrytedBytes.lengt <. Lo estaba usando muy mal Ahora mi código está funcionando como