Encriptar cadena de conexion

19/07/2006 - 19:09 por Robinson.Moscoso | Informe spam
Como estan, tengo una inquietud, desarrollé una aplicacion en VB 2005 y entre
otras cosas utlicé el asistente para crear un dataset y bien todo, resulta
que cuando compilo la aplicacion el me guarda la cadena de conexion a mi base
de datos Access en un archivo .config, con lo cual queda totalmente expuesta
la clave de acceso al archivo de access, mi pregunta es como puedo encriptar
esa cadena de conexion, y luego como hago para desencritar la cadena y
utlizarla?, toda la información al respecto bienvenida sea.

Un saludo

Róbinson Moscoso

Preguntas similare

Leer las respuestas

#1 Angel. E. Ruiz. P
19/07/2006 - 19:38 | Informe spam
Con ASP.NET 2.0 podemos encriptar cualquier fichero Web.Config reforzando la
seguridad fácilmente.

Aqui te coloco un link con un ejemplo paso a paso:

http://www.elquintero.net/DatTipsYTrucos.aspx?Id&jscript=true

Saludos cordiales,
Ángel Ruiz
MCP C#
MVP de Visual Basic desde 2004
Caracas - Venezuela
"El conocimiento es un bien, que crece a medida que se comparte"


"Robinson.Moscoso" escribió en
el mensaje news:
Como estan, tengo una inquietud, desarrollé una aplicacion en VB 2005 y
entre
otras cosas utlicé el asistente para crear un dataset y bien todo, resulta
que cuando compilo la aplicacion el me guarda la cadena de conexion a mi
base
de datos Access en un archivo .config, con lo cual queda totalmente
expuesta
la clave de acceso al archivo de access, mi pregunta es como puedo
encriptar
esa cadena de conexion, y luego como hago para desencritar la cadena y
utlizarla?, toda la información al respecto bienvenida sea.

Un saludo

Róbinson Moscoso
Respuesta Responder a este mensaje
#2 Jesús López
19/07/2006 - 20:43 | Informe spam
El problema de guardar secretos es bastante más difícil de lo que parece. Tú
quieres encriptar una contraseña (un secreto), para lo cual, usando los
algoritmos actuales de encriptación, es necesario una clave. Esta clave es a
su vez otro secreto. ¿Donde la guardas?

En el siguiente ejemplo que utiliza el algoritmo de Rijndael con una clave
de 192 bits y un vector de inicialización de 128 bits, la clave y el vector
están guardados directamente en el código, lo que resulta muy fácil de
descubrir usando .NET Reflector si se tiene acceso al ensamblado.

Imports System.Security.Cryptography
Imports System.Text

Public Class Form4
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Me.TextBox1.Text = Cifrador.Cifrar(Me.TextBox1.Text)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Me.TextBox1.Text = Cifrador.Descifrar(Me.TextBox1.Text)
End Sub
End Class


Public Class Cifrador

Private Shared _algoritmo As SymmetricAlgorithm

Private Shared ReadOnly VectorInicializacion() As Byte = { _
254, 12, 19, 166, 164, 133, 164, 207, _
150, 249, 124, 37, 98, 89, 18, 123 _
}

Private Shared ReadOnly Clave() As Byte = { _
68, 222, 18, 19, 117, 125, 143, 215, _
108, 124, 130, 119, 132, 34, 66, 13, _
56, 141, 77, 211, 124, 13, 218, 93 _
}


Private Shared ReadOnly Property Algoritmo() As SymmetricAlgorithm
Get
If _algoritmo Is Nothing Then
_algoritmo = Rijndael.Create()
_algoritmo.Key = Clave
_algoritmo.IV = VectorInicializacion
End If
Return _algoritmo
End Get
End Property

Private Shared _encriptador As ICryptoTransform

Private Shared ReadOnly Property Encriptador() As ICryptoTransform
Get
If _encriptador Is Nothing Then
_encriptador = Algoritmo.CreateEncryptor()
End If
Return _encriptador
End Get
End Property

Private Shared _desencriptador As ICryptoTransform

Private Shared ReadOnly Property Desencriptador() As ICryptoTransform
Get
If _desencriptador Is Nothing Then
_desencriptador = Algoritmo.CreateDecryptor()
End If
Return _desencriptador
End Get
End Property


Public Shared Function Cifrar(ByVal Texto As String) As String
Dim BytesTexto() As Byte = Encoding.UTF8.GetBytes(Texto)
Dim BytesCifrados() As Byte =
Encriptador.TransformFinalBlock(BytesTexto, 0, BytesTexto.Length)
Dim TextoCifrado As String = Convert.ToBase64String(BytesCifrados)
Return TextoCifrado
End Function

Public Shared Function Descifrar(ByVal TextoCifrado As String) As String
Dim BytesCifrados() As Byte = Convert.FromBase64String(TextoCifrado)
Dim BytesDescifrados() As Byte =
Desencriptador.TransformFinalBlock(BytesCifrados, 0, BytesCifrados.Length)
Dim TextoDescrifrado As String =
Encoding.UTF8.GetString(BytesDescifrados)
Return TextoDescrifrado
End Function

End Class

También es posible usar la clase ProtectedData
http://msdn2.microsoft.com/en-us/li...ddata.aspx
que usa las credenciales del usuario actual o de la máquina para encriptar
información. Si usas las credenciales del usuario, cualquier programa que se
ejecute con el mismo usuario podría desencriptar la información. Si usas las
credenciales de la máquina, cualquier programa ejecutándose en la misma
máquina podría desencriptar la información.

Saludos:

Jesús López



"Robinson.Moscoso" escribió en
el mensaje news:
Como estan, tengo una inquietud, desarrollé una aplicacion en VB 2005 y
entre
otras cosas utlicé el asistente para crear un dataset y bien todo, resulta
que cuando compilo la aplicacion el me guarda la cadena de conexion a mi
base
de datos Access en un archivo .config, con lo cual queda totalmente
expuesta
la clave de acceso al archivo de access, mi pregunta es como puedo
encriptar
esa cadena de conexion, y luego como hago para desencritar la cadena y
utlizarla?, toda la información al respecto bienvenida sea.

Un saludo

Róbinson Moscoso
Respuesta Responder a este mensaje
#3 Robinson.Moscoso
19/07/2006 - 21:08 | Informe spam
Gracias por la información, muy buena

Un saludo a todos

Róbinson Moscoso

"Robinson.Moscoso" wrote:

Como estan, tengo una inquietud, desarrollé una aplicacion en VB 2005 y entre
otras cosas utlicé el asistente para crear un dataset y bien todo, resulta
que cuando compilo la aplicacion el me guarda la cadena de conexion a mi base
de datos Access en un archivo .config, con lo cual queda totalmente expuesta
la clave de acceso al archivo de access, mi pregunta es como puedo encriptar
esa cadena de conexion, y luego como hago para desencritar la cadena y
utlizarla?, toda la información al respecto bienvenida sea.

Un saludo

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