Ayuda en como Desencriptar cadena

21/04/2006 - 01:35 por DAVIS GODOY TORRES | Informe spam
Hola Amigos tengo un pequeño problema, he encriptado una cadena
usando la siguiente rutina:

Imports System.Security.Cryptography

Private Function Encrypt2(ByVal vCadena As String) As String
Dim clearBytes As [Byte]()
clearBytes = New UnicodeEncoding().GetBytes(vCadena)
Dim hashedBytes As [Byte]() =
CType(CryptoConfig.CreateFromName("MD5"),
HashAlgorithm).ComputeHash(clearBytes)
Dim hashedText As String = BitConverter.ToString(hashedBytes)
Return hashedText
End Function

MI PREGUNTA ES: ¿COMO PUEDO REGRESAR AL VALOR INICIAL, ALGUIEN PODRIA
AYUDARME? ES DECIR ¿CUAL SERIA LA RUTINA PARA DESENCRIPTARLO?

GRACIAS

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
21/04/2006 - 04:26 | Informe spam
MI PREGUNTA ES: ¿COMO PUEDO REGRESAR AL VALOR INICIAL, ALGUIEN PODRIA
AYUDARME? ES DECIR ¿CUAL SERIA LA RUTINA PARA DESENCRIPTARLO?



No puedes, ya que MD5 no es un algoritmo de encriptacion sino de hash. Un
hash es un valor que se calcula realizando calculos con la data y no hay
forma que desde este valor se pueda obtener la data que lo origino. Usos
comunes de los hash son verificar que datos no hayan sido modificados y
almacenar contraseñas. En el caso de la contraseña para la validacion no se
"desencripta" sino que se genera un hash de la contraseña ingresada por el
usuario y se compara contra el hash almacenado (sin son iguales la
contraseña es correcta).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 DAVIS GODOY TORRES
21/04/2006 - 15:51 | Informe spam
Gracias!!!!

Entonces tendria siempre que encriptar los valores y comparalos con el
verdadero encriptado para verificar que esta correcta la informacion. Ummmm

Sim enbargo lo que yo necesito es obtener el valor original ya que dentro de
este encriptado esta la cantidad de usuario que pueden conectarse a cierto
modulos, por ejemplo el valor original del encriptado es:

CONTA-3-TTL que siginifica que al Modulo de Contabilidad solo ingresan 3
usuarios
ADMIN-3-TTL que siginifica que al Modulo de Adminisracion solo ingresan 3
usuarios
ALMAC-3-TTL que siginifica que al Modulo de Almacenes solo ingresan 3 usuarios

y al utilizar el encriptamiento que te muestro sucede que cada valor es
distinto del otro.

Sin embargo tengo otra rutina que tambien encriptar y desencripta pero la
diferencia es que los ultimos 5 digitos (3-TTL) los pone igual por ejemplo
para:

CONTA-3-TTL = yFntjut%(#yHj
ADMIN-3-TTL = lyudsjTt%(#yHj
ALMAC-3-TTL = ñop@!t%(#yHj

¿Tendrias una forma en como hacer que cada unos de los string genere un
distinto valor encriptado, es decir que ningun se parezca al otro usando la
misma rutina de encriptacion?

Gracias!!!!!

"Eduardo A. Morcillo [MS MVP VB]" wrote:

> MI PREGUNTA ES: ¿COMO PUEDO REGRESAR AL VALOR INICIAL, ALGUIEN PODRIA
> AYUDARME? ES DECIR ¿CUAL SERIA LA RUTINA PARA DESENCRIPTARLO?

No puedes, ya que MD5 no es un algoritmo de encriptacion sino de hash. Un
hash es un valor que se calcula realizando calculos con la data y no hay
forma que desde este valor se pueda obtener la data que lo origino. Usos
comunes de los hash son verificar que datos no hayan sido modificados y
almacenar contraseñas. En el caso de la contraseña para la validacion no se
"desencripta" sino que se genera un hash de la contraseña ingresada por el
usuario y se compara contra el hash almacenado (sin son iguales la
contraseña es correcta).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C



Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
21/04/2006 - 17:05 | Informe spam
Entonces tendria siempre que encriptar los valores y comparalos con el
verdadero encriptado para verificar que esta correcta la informacion.



Eso es porque lo que estas usando no es encriptacion.

¿Tendrias una forma en como hacer que cada unos de los string genere
un distinto valor encriptado, es decir que ningun se parezca al otro
usando la misma rutina de encriptacion?



Puedes usar estas funciones para encriptar y desencriptar. Aunque es
posible, dependiendo de cuanto tengan en comun los valores, que sean
parecidos. La unica forma de asegurar de que lo encriptado sea diferente es
utilizar un valor de IV diferente para cada valor que encriptas.

Public Shared Function Decrypt(ByVal encryptedText As String, ByVal password
As String) As String

Dim buffer() As Byte = Convert.FromBase64String(encryptedText)
Dim iv As Byte() = {0, 0, 0, 0, 0, 0, 0, 0}
Dim provider As SymmetricAlgorithm =
SymmetricAlgorithm.Create("TripleDES")
Dim key() As Byte = New PasswordDeriveBytes(password,
iv).CryptDeriveKey("TripleDES", "MD5", provider.KeySize, iv)
Dim decryptor As ICryptoTransform = provider.CreateDecryptor(key, iv)

Try
Return Encoding.UTF8.GetString(decryptor.TransformFinalBlock(buffer,
0, buffer.Length))
Finally
decryptor.Dispose()
End Try

End Function

Public Shared Function Encrypt(ByVal text As String, ByVal password As
String) As String

Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
Dim provider As SymmetricAlgorithm =
SymmetricAlgorithm.Create("TripleDES")
Dim key() As Byte = New PasswordDeriveBytes(password,
iv).CryptDeriveKey("TripleDES", "MD5", provider.KeySize, iv)
Dim encryptor As ICryptoTransform = provider.CreateEncryptor(key, iv)

Try
Return Convert.ToBase64String(encryptor.TransformFinalBlock(buffer,
0, buffer.Length))
Finally
encryptor.Dispose()
End Try

End Function

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 DAVIS GODOY TORRES
25/04/2006 - 16:02 | Informe spam
Hi Eduardo

Gracias por las funciones para encriptar y desencriptar. estan
Excelentes ya se puede generar distintos valores para cada String que le
envio a pesar en cada uno tienen coincidentemente valores similares.

Gracias!!!!!!!!!!!!!!

"Eduardo A. Morcillo [MS MVP VB]" wrote:

> Entonces tendria siempre que encriptar los valores y comparalos con el
> verdadero encriptado para verificar que esta correcta la informacion.

Eso es porque lo que estas usando no es encriptacion.

> ¿Tendrias una forma en como hacer que cada unos de los string genere
> un distinto valor encriptado, es decir que ningun se parezca al otro
> usando la misma rutina de encriptacion?

Puedes usar estas funciones para encriptar y desencriptar. Aunque es
posible, dependiendo de cuanto tengan en comun los valores, que sean
parecidos. La unica forma de asegurar de que lo encriptado sea diferente es
utilizar un valor de IV diferente para cada valor que encriptas.

Public Shared Function Decrypt(ByVal encryptedText As String, ByVal password
As String) As String

Dim buffer() As Byte = Convert.FromBase64String(encryptedText)
Dim iv As Byte() = {0, 0, 0, 0, 0, 0, 0, 0}
Dim provider As SymmetricAlgorithm =
SymmetricAlgorithm.Create("TripleDES")
Dim key() As Byte = New PasswordDeriveBytes(password,
iv).CryptDeriveKey("TripleDES", "MD5", provider.KeySize, iv)
Dim decryptor As ICryptoTransform = provider.CreateDecryptor(key, iv)

Try
Return Encoding.UTF8.GetString(decryptor.TransformFinalBlock(buffer,
0, buffer.Length))
Finally
decryptor.Dispose()
End Try

End Function

Public Shared Function Encrypt(ByVal text As String, ByVal password As
String) As String

Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim iv() As Byte = {0, 0, 0, 0, 0, 0, 0, 0}
Dim provider As SymmetricAlgorithm =
SymmetricAlgorithm.Create("TripleDES")
Dim key() As Byte = New PasswordDeriveBytes(password,
iv).CryptDeriveKey("TripleDES", "MD5", provider.KeySize, iv)
Dim encryptor As ICryptoTransform = provider.CreateEncryptor(key, iv)

Try
Return Convert.ToBase64String(encryptor.TransformFinalBlock(buffer,
0, buffer.Length))
Finally
encryptor.Dispose()
End Try

End Function

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C



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