Encriptar y Desencriptar cadena de texto

18/08/2006 - 23:27 por Andreina Mendez | Informe spam
Buenas tardes,

He probado con varios ejemplo, inclusive el código ejemplo que se encuentra
en msdn en la dirección:
http://msdn2.microsoft.com/en-us/li...sform.aspx
para encriptar y desencriptar una cadena de texto.

La encriptación se realiza satisfactoriamente, pero al momento de
desencriptar me ocurre una Excepción de la siguiente manera:

System.Security.Cryptography.CryptographicException was caught
Message="Longitud de datos para descifrado no válida."
Source="mscorlib"
StackTrace:
en
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[]
inputBuffer, Int32 inputOffset, Int32 inputCount)
en Encrypt_Decrypt.clsEncrypt2.DecodeBytes(Byte[] sourceBytes) en
C:\

Agradecería mucho si alguien me puede guiar, pues no se bien cual es el
error..

Además he probado con otro código y ocurre lo mismo. El código es algo así:

Dim enc As New IO.MemoryStream(encryptedData.Bytes)
Dim cs As CryptoStream = Nothing
cs = New CryptoStream(enc, _crypto.CreateDecryptor, CryptoStreamMode.Read)
Dim buffer(5) As Byte
cs.Read(buffer, 0, 5)
 

Leer las respuestas

#1 Richard Vasquez C.
19/08/2006 - 00:45 | Informe spam
Saludos Adriana.

Hola Adriana.

Justo estos dias hice una pequeña aplicacion utilizando el algoritmo DES

Imports System.IO

Imports System.Text

Imports System.Security.Cryptography



Public Class FrmEncriptar



Dim saEnc As SymmetricAlgorithm



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

Try

Dim Datos() As Byte =
Encoding.Default.GetBytes(Me.TextBox1.Text)

saEnc = SymmetricAlgorithm.Create("DES")

Dim ct As ICryptoTransform

ct = saEnc.CreateEncryptor

Me.txtLlave.Text = Encoding.Default.GetString(saEnc.Key)

Me.txtIV.Text = Encoding.Default.GetString(saEnc.IV)

Me.TextBox2.Text = ""

Dim ms As New MemoryStream

Dim cs As New CryptoStream(ms, ct, CryptoStreamMode.Write)

cs.Write(Datos, 0, Datos.Length)

cs.FlushFinalBlock()

Me.TextBox2.Text = Encoding.Default.GetString(ms.ToArray())

Catch Qex As Exception

MessageBox.Show(Qex.Message)

End Try

End Sub



Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click

Try

Dim Datos() As Byte =
Encoding.Default.GetBytes(Me.TextBox2.Text)

Dim saDenc As SymmetricAlgorithm

Dim mysaDenc As SymmetricAlgorithm

saDenc = SymmetricAlgorithm.Create("DES")

Dim cto As ICryptoTransform

'cto = saDenc.CreateDecryptor(saEnc.Key, saEnc.IV)

mysaDenc = SymmetricAlgorithm.Create("DES")

mysaDenc.Key = Encoding.Default.GetBytes(Me.txtLlave.Text)

mysaDenc.IV = Encoding.Default.GetBytes(Me.txtIV.Text)

cto = saDenc.CreateDecryptor(mysaDenc.Key, mysaDenc.IV)

Dim ms As New MemoryStream(Datos)

Dim mso As New MemoryStream

Dim cso As New CryptoStream(mso, cto, CryptoStreamMode.Write)

cso.Write(ms.ToArray(), 0, ms.ToArray().Length)

cso.FlushFinalBlock()

Me.TextBox3.Text = Encoding.Default.GetString(mso.ToArray())

Catch Qex As Exception

MessageBox.Show(Qex.Message)

End Try

End Sub



End Class



Saludos2.


"Andreina Mendez" escribió en el mensaje
news:
Buenas tardes,

He probado con varios ejemplo, inclusive el código ejemplo que se
encuentra en msdn en la dirección:
http://msdn2.microsoft.com/en-us/li...sform.aspx
para encriptar y desencriptar una cadena de texto.

La encriptación se realiza satisfactoriamente, pero al momento de
desencriptar me ocurre una Excepción de la siguiente manera:

System.Security.Cryptography.CryptographicException was caught
Message="Longitud de datos para descifrado no válida."
Source="mscorlib"
StackTrace:
en
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[]
inputBuffer, Int32 inputOffset, Int32 inputCount)
en Encrypt_Decrypt.clsEncrypt2.DecodeBytes(Byte[] sourceBytes) en
C:\

Agradecería mucho si alguien me puede guiar, pues no se bien cual es el
error..

Además he probado con otro código y ocurre lo mismo. El código es algo
así:

Dim enc As New IO.MemoryStream(encryptedData.Bytes)
Dim cs As CryptoStream = Nothing
cs = New CryptoStream(enc, _crypto.CreateDecryptor, CryptoStreamMode.Read)
Dim buffer(5) As Byte
cs.Read(buffer, 0, 5)

Preguntas similares