Ayuda para pasar de c# a VB.

18/02/2006 - 01:09 por Carlos | Informe spam
¿Alguien me puede ayudar a pasar este codigo a VB?

Es un ejemplo de encriptar / desencriptar de la web del Guille.

SymmetricAlgorithm saEnc;

private void btnEncriptar_Click(object sender, System.EventArgs e)

{

byte[] dataorg = Encoding.Default.GetBytes(txtTextoOriginal.Text);

saEnc = SymmetricAlgorithm.Create(cmbAlgoritmos.SelectedItem.ToString());

ICryptoTransform ct = saEnc.CreateEncryptor();

txtKeyGenerado.Text = Encoding.Default.GetString(saEnc.Key);

txtIVGenerado.Text = Encoding.Default.GetString(saEnc.IV);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms,ct,CryptoStreamMode.Write);

cs.Write(dataorg,0,dataorg.Length);

cs.FlushFinalBlock();

txtTextoEncrypado.Text = Encoding.Default.GetString(ms.ToArray());

lblTextoEncLen.Text = txtTextoEncrypado.Text.Length.ToString();

}

private void btnDesencriptar_Click(object sender, System.EventArgs e)

{

SymmetricAlgorithm saDEnc =
SymmetricAlgorithm.Create(cmbAlgoritmos.SelectedItem.ToString());

byte[] textoEncriptado =
Encoding.Default.GetBytes(txtTextoEncrypado.Text);

MemoryStream ms = new MemoryStream(textoEncriptado);

ICryptoTransform cto = saDEnc.CreateDecryptor(saEnc.Key, saEnc.IV);

MemoryStream mso = new MemoryStream();

CryptoStream cso = new CryptoStream(mso,cto,CryptoStreamMode.Write);

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

cso.FlushFinalBlock();

txtTextoDesecriptado.Text = Encoding.Default.GetString(mso.ToArray());

}

Preguntas similare

Leer las respuestas

#6 Hector Minaya [VB.Net MVP]
19/02/2006 - 19:10 | Informe spam
Hay muchos lugares donde las puedes guardar, existe el registry de la
maquina.

Lo que no debes hacer es guardarlas en tu codigo o en un archivo de texto
plano.



Hector Minaya, MVP Visual Basic

blog: http://www.VBdevelopers.Net

"Carlos" wrote in message
news:
¿donde las puedo guardar?

Mi idea es hacer una base de datos de usuarios/contraseñas pero con los
campos encriptados.

Carlos.

"Jesús López" escribió en el mensaje
news:
No funciona porque la clave y el vector de inicialización son arrays de
bytes, y un textbox muesta una cadena, lo mismo ocurre con el fichero de
texto.

En cuanto a gruardar las claves en el propio código, tengo que advertirte
que no es seguro porque cualquiera podría abrir el ensamblado y encontrar
las claves.


Saludos:

Jesús López
VB MVP



"Carlos" escribió en el mensaje
news:%
He hecho las funciones que he publicado en este hilo y el problema me
surge para guardar las claves Key e IV, entiendo que lo normal es
guardarlas dentro del codigo y llamar a la función encriptar y a la
función desencriptar con las mismas claves ¿no?

Pues bien, como veis en el codigo, tengo dos msgbox que muestran key y
IV, pues esto funciona, pero si intento meter el valor de esto en un
.text de un textbox, de un label o en un fichero de texto no va ¿por
que?

Un saludo,

Carlos.

"Carlos" escribió en el mensaje
news:
Falta definir la variable publica en el modulo:

Public asEnc As SymmetricAlgorithm


"Carlos" escribió en el mensaje
news:
¡Ya me funciona!:

Public Function Encriptar(ByVal TextoOriginal As String) As String

Dim algoritmo As String

algoritmo = "3DES"

Dim dataorg As Byte() = Encoding.Default.GetBytes(TextoOriginal)

asEnc = SymmetricAlgorithm.Create(algoritmo)

Dim ct As ICryptoTransform = asEnc.CreateEncryptor()

'MsgBox("Key: " & Encoding.Default.GetString(asEnc.Key))

'MsgBox("IV: " & Encoding.Default.GetString(asEnc.IV))

Dim ms As MemoryStream = New MemoryStream()

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

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

cs.FlushFinalBlock()

Encriptar = Encoding.Default.GetString(ms.ToArray())

End Function

Public Function Desencriptar(ByVal TextoEncriptado As String) As
String

Dim algoritmo As String

algoritmo = "3DES"

Dim saDEnc As SymmetricAlgorithm =
SymmetricAlgorithm.Create(algoritmo)

Dim te1 As Byte() = Encoding.Default.GetBytes(textoencriptado)

Dim ms As MemoryStream = New MemoryStream(te1)

Dim cto As ICryptoTransform = saDEnc.CreateDecryptor(asEnc.Key,
asEnc.IV)

Dim mso As MemoryStream = New MemoryStream()

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

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

cso.FlushFinalBlock()

Desencriptar = Encoding.Default.GetString(mso.ToArray())

End Function




Había pensado dejar el Key y el IV fijo por codigo ¿hay algún
problema?

Un saludo,

Carlos.




"Carlos" escribió en el mensaje
news:Oa9QL%
¿Alguien me puede ayudar a pasar este codigo a VB?

Es un ejemplo de encriptar / desencriptar de la web del Guille.

SymmetricAlgorithm saEnc;

private void btnEncriptar_Click(object sender, System.EventArgs e)

{

byte[] dataorg = Encoding.Default.GetBytes(txtTextoOriginal.Text);

saEnc =
SymmetricAlgorithm.Create(cmbAlgoritmos.SelectedItem.ToString());

ICryptoTransform ct = saEnc.CreateEncryptor();

txtKeyGenerado.Text = Encoding.Default.GetString(saEnc.Key);

txtIVGenerado.Text = Encoding.Default.GetString(saEnc.IV);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms,ct,CryptoStreamMode.Write);

cs.Write(dataorg,0,dataorg.Length);

cs.FlushFinalBlock();

txtTextoEncrypado.Text = Encoding.Default.GetString(ms.ToArray());

lblTextoEncLen.Text = txtTextoEncrypado.Text.Length.ToString();

}

private void btnDesencriptar_Click(object sender, System.EventArgs e)

{

SymmetricAlgorithm saDEnc =
SymmetricAlgorithm.Create(cmbAlgoritmos.SelectedItem.ToString());

byte[] textoEncriptado =
Encoding.Default.GetBytes(txtTextoEncrypado.Text);

MemoryStream ms = new MemoryStream(textoEncriptado);

ICryptoTransform cto = saDEnc.CreateDecryptor(saEnc.Key, saEnc.IV);

MemoryStream mso = new MemoryStream();

CryptoStream cso = new CryptoStream(mso,cto,CryptoStreamMode.Write);

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

cso.FlushFinalBlock();

txtTextoDesecriptado.Text =
Encoding.Default.GetString(mso.ToArray());

}























Respuesta Responder a este mensaje
#7 Jesús López
21/02/2006 - 22:29 | Informe spam
Yo creo que en realidad no necesitas guardar la contraseña. Lo que puedes
hacer es guardar un hash criptográfico de la contraseña y para validar un
usuario simplemente volver a obtener el hash y compararlo con el guardado.
Con los hash criptográficos no necesitas guardar ningún secreto. El secreto
mejor guardado es el que no existe.


O sea algo así como (en pseudocódigo)

Contraseña = PedirContraseñaAlUsuario()

Si Hash(Contraseña) = HashGuardado Entonces
Contraseña válida
Si no
Contraseña no válida


Saludos:

Jesús López
MVP


"Carlos" escribió en el mensaje
news:
¿donde las puedo guardar?

Mi idea es hacer una base de datos de usuarios/contraseñas pero con los
campos encriptados.

Carlos.

"Jesús López" escribió en el mensaje
news:
No funciona porque la clave y el vector de inicialización son arrays de
bytes, y un textbox muesta una cadena, lo mismo ocurre con el fichero de
texto.

En cuanto a gruardar las claves en el propio código, tengo que advertirte
que no es seguro porque cualquiera podría abrir el ensamblado y encontrar
las claves.


Saludos:

Jesús López
VB MVP



"Carlos" escribió en el mensaje
news:%
He hecho las funciones que he publicado en este hilo y el problema me
surge para guardar las claves Key e IV, entiendo que lo normal es
guardarlas dentro del codigo y llamar a la función encriptar y a la
función desencriptar con las mismas claves ¿no?

Pues bien, como veis en el codigo, tengo dos msgbox que muestran key y
IV, pues esto funciona, pero si intento meter el valor de esto en un
.text de un textbox, de un label o en un fichero de texto no va ¿por
que?

Un saludo,

Carlos.

"Carlos" escribió en el mensaje
news:
Falta definir la variable publica en el modulo:

Public asEnc As SymmetricAlgorithm


"Carlos" escribió en el mensaje
news:
¡Ya me funciona!:

Public Function Encriptar(ByVal TextoOriginal As String) As String

Dim algoritmo As String

algoritmo = "3DES"

Dim dataorg As Byte() = Encoding.Default.GetBytes(TextoOriginal)

asEnc = SymmetricAlgorithm.Create(algoritmo)

Dim ct As ICryptoTransform = asEnc.CreateEncryptor()

'MsgBox("Key: " & Encoding.Default.GetString(asEnc.Key))

'MsgBox("IV: " & Encoding.Default.GetString(asEnc.IV))

Dim ms As MemoryStream = New MemoryStream()

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

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

cs.FlushFinalBlock()

Encriptar = Encoding.Default.GetString(ms.ToArray())

End Function

Public Function Desencriptar(ByVal TextoEncriptado As String) As
String

Dim algoritmo As String

algoritmo = "3DES"

Dim saDEnc As SymmetricAlgorithm =
SymmetricAlgorithm.Create(algoritmo)

Dim te1 As Byte() = Encoding.Default.GetBytes(textoencriptado)

Dim ms As MemoryStream = New MemoryStream(te1)

Dim cto As ICryptoTransform = saDEnc.CreateDecryptor(asEnc.Key,
asEnc.IV)

Dim mso As MemoryStream = New MemoryStream()

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

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

cso.FlushFinalBlock()

Desencriptar = Encoding.Default.GetString(mso.ToArray())

End Function




Había pensado dejar el Key y el IV fijo por codigo ¿hay algún
problema?

Un saludo,

Carlos.




"Carlos" escribió en el mensaje
news:Oa9QL%
¿Alguien me puede ayudar a pasar este codigo a VB?

Es un ejemplo de encriptar / desencriptar de la web del Guille.

SymmetricAlgorithm saEnc;

private void btnEncriptar_Click(object sender, System.EventArgs e)

{

byte[] dataorg = Encoding.Default.GetBytes(txtTextoOriginal.Text);

saEnc =
SymmetricAlgorithm.Create(cmbAlgoritmos.SelectedItem.ToString());

ICryptoTransform ct = saEnc.CreateEncryptor();

txtKeyGenerado.Text = Encoding.Default.GetString(saEnc.Key);

txtIVGenerado.Text = Encoding.Default.GetString(saEnc.IV);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms,ct,CryptoStreamMode.Write);

cs.Write(dataorg,0,dataorg.Length);

cs.FlushFinalBlock();

txtTextoEncrypado.Text = Encoding.Default.GetString(ms.ToArray());

lblTextoEncLen.Text = txtTextoEncrypado.Text.Length.ToString();

}

private void btnDesencriptar_Click(object sender, System.EventArgs e)

{

SymmetricAlgorithm saDEnc =
SymmetricAlgorithm.Create(cmbAlgoritmos.SelectedItem.ToString());

byte[] textoEncriptado =
Encoding.Default.GetBytes(txtTextoEncrypado.Text);

MemoryStream ms = new MemoryStream(textoEncriptado);

ICryptoTransform cto = saDEnc.CreateDecryptor(saEnc.Key, saEnc.IV);

MemoryStream mso = new MemoryStream();

CryptoStream cso = new CryptoStream(mso,cto,CryptoStreamMode.Write);

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

cso.FlushFinalBlock();

txtTextoDesecriptado.Text =
Encoding.Default.GetString(mso.ToArray());

}























email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida