Encriptar / desencriptar una cadena de texto

17/05/2005 - 13:48 por Baldor | Informe spam
Me suena que hay alguna clase en el Framework para poder
encriptar/desencriptar un string.
¿Alguien la conoce?

Gracias

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
17/05/2005 - 16:32 | Informe spam
No hay ninguna clase que encripte o desencripte strings en el framework. Lo
que si tienes son clases de algoritmos de encriptacion y con ellas puedes
encriptar tu string. Puedes usar estas funciones:

''' --
''' <summary>
''' Encrypts a string using the given provider and a key derived
from password using MD5.
''' </summary>
''' --
Public Shared Function Encrypt( _
ByVal text As String, ByVal password As String, ByVal
algorithmName As String) As String

' Create the provider object
Dim encProvider As SymmetricAlgorithm =
SymmetricAlgorithm.Create(algorithmName)

' Convert the string to a byte array
Dim data() As Byte = UTF8.GetBytes(text)

' Derive the key from the password
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
Dim keyb() As Byte = (New PasswordDeriveBytes(password,
iv).CryptDeriveKey( _
algorithmName, "MD5",
encProvider.KeySize, iv))

' Create an encryptor object
Dim transform As ICryptoTransform =
encProvider.CreateEncryptor(keyb, iv)

Try

' Encrypt the string and convert the result to Base64
Return
System.Convert.ToBase64String(transform.TransformFinalBlock(data, 0,
data.Length))

Finally

' Release the transform object
transform.Dispose()

End Try

End Function

''' --
''' <summary>
''' Encrypts a string using the given provider and a key derived
from password using MD5.
''' </summary>
''' --
Public Shared Function Decrypt( _
ByVal encryptedText As String, ByVal password As String, ByVal
algorithmName As String) As String

' Create the provider object
Dim encProvider As SymmetricAlgorithm =
SymmetricAlgorithm.Create(algorithmName)

' Convert the Base-64 string to a byte array
Dim data() As Byte =
System.Convert.FromBase64String(encryptedText)

' Derive the key from the password
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
Dim keyb() As Byte = (New PasswordDeriveBytes(password,
iv).CryptDeriveKey( _
algorithmName, "MD5", encProvider.KeySize,
iv))

' Create a decryptor object
Dim transform As ICryptoTransform =
encProvider.CreateDecryptor(keyb, iv)

Try

' Decrypt the data and convert it to a string
Return UTF8.GetString(transform.TransformFinalBlock(data, 0,
data.Length))

Finally

' Release the transform object
transform.Dispose()

End Try

End Function


Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Carlos Gómez
17/05/2005 - 17:07 | Informe spam
El termino español es cifrar y descifrar. Encriptar es un 'palabro'
"Baldor" escribió en el mensaje
news:
Me suena que hay alguna clase en el Framework para poder
encriptar/desencriptar un string.
¿Alguien la conoce?

Gracias

Respuesta Responder a este mensaje
#3 Baldor
18/05/2005 - 10:13 | Informe spam
Gracias Eduardo, ¿tienes algún ejemplo de la utilización de estas funciones?
Por ejemplo, no se que valores son validos para el parametro algorithmName


"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:
No hay ninguna clase que encripte o desencripte strings en el framework.
Lo que si tienes son clases de algoritmos de encriptacion y con ellas
puedes encriptar tu string. Puedes usar estas funciones:

''' --
''' <summary>
''' Encrypts a string using the given provider and a key derived
from password using MD5.
''' </summary>
''' --
Public Shared Function Encrypt( _
ByVal text As String, ByVal password As String, ByVal
algorithmName As String) As String

' Create the provider object
Dim encProvider As SymmetricAlgorithm =
SymmetricAlgorithm.Create(algorithmName)

' Convert the string to a byte array
Dim data() As Byte = UTF8.GetBytes(text)

' Derive the key from the password
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
Dim keyb() As Byte = (New PasswordDeriveBytes(password,
iv).CryptDeriveKey( _
algorithmName, "MD5",
encProvider.KeySize, iv))

' Create an encryptor object
Dim transform As ICryptoTransform =
encProvider.CreateEncryptor(keyb, iv)

Try

' Encrypt the string and convert the result to Base64
Return
System.Convert.ToBase64String(transform.TransformFinalBlock(data, 0,
data.Length))

Finally

' Release the transform object
transform.Dispose()

End Try

End Function

''' --
''' <summary>
''' Encrypts a string using the given provider and a key derived
from password using MD5.
''' </summary>
''' --
Public Shared Function Decrypt( _
ByVal encryptedText As String, ByVal password As String, ByVal
algorithmName As String) As String

' Create the provider object
Dim encProvider As SymmetricAlgorithm =
SymmetricAlgorithm.Create(algorithmName)

' Convert the Base-64 string to a byte array
Dim data() As Byte =
System.Convert.FromBase64String(encryptedText)

' Derive the key from the password
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
Dim keyb() As Byte = (New PasswordDeriveBytes(password,
iv).CryptDeriveKey( _
algorithmName, "MD5",
encProvider.KeySize, iv))

' Create a decryptor object
Dim transform As ICryptoTransform =
encProvider.CreateDecryptor(keyb, iv)

Try

' Decrypt the data and convert it to a string
Return UTF8.GetString(transform.TransformFinalBlock(data,
0, data.Length))

Finally

' Release the transform object
transform.Dispose()

End Try

End Function


Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#4 Eduardo A. Morcillo [MS MVP VB]
18/05/2005 - 14:49 | Informe spam
Gracias Eduardo, ¿tienes algún ejemplo de la utilización de estas
funciones? Por ejemplo, no se que valores son validos para el
parametro algorithmName



En el parametro algorithmName le pasas el nombre del algoritmo de cifrado
que quiere que se use para cifrar el texto. Este puede ser el nombre de una
clase que implementa el algoritmo o el nombre de un algoritmo (los
disponibles en el framework son DES, 3DES, Rijndael y RC2). Por ejemplo para
cifrar y descifrar usando 3DES:

Dim textoCifrado As String
Dim textoPlano As String

textoCifrado = Encrypt("Hola Mundo!", "contraseña", "3DES")
textoPlano = Decrypt(textoCifrado, "contraseña", "3DES")

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#5 Baldor
19/05/2005 - 11:50 | Informe spam
Sigo teniendo problemas con las funciones, esta linea me da error:

Dim keyb() As Byte = (New PasswordDeriveBytes(password,
iv).CryptDeriveKey(algorithmName, "MD5", encProvider.KeySize, iv))

El mensaje de error empieza con : "El algoritmo no está disponible o no se
admite para esta operación"

Lo llamo así:

Encrypt(variableString, "cualquier_texto", "3DES")

Entiendo que el segundo parametro es indiferente siempre que usemos el mismo
valor en todas las llamadas.

¿Me puedes echar una mano?



"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:%
Gracias Eduardo, ¿tienes algún ejemplo de la utilización de estas
funciones? Por ejemplo, no se que valores son validos para el
parametro algorithmName



En el parametro algorithmName le pasas el nombre del algoritmo de cifrado
que quiere que se use para cifrar el texto. Este puede ser el nombre de
una clase que implementa el algoritmo o el nombre de un algoritmo (los
disponibles en el framework son DES, 3DES, Rijndael y RC2). Por ejemplo
para cifrar y descifrar usando 3DES:

Dim textoCifrado As String
Dim textoPlano As String

textoCifrado = Encrypt("Hola Mundo!", "contraseña", "3DES")
textoPlano = Decrypt(textoCifrado, "contraseña", "3DES")

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida