Cifrar base de datos

15/05/2010 - 21:41 por Jose Carlos | Informe spam
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me encuentro
con que tengo una pequeña aplicación en la que se guardan datos personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia

Preguntas similare

Leer las respuestas

#1 Gustavo Cantero \(The Wolf\)
15/05/2010 - 23:20 | Informe spam
Si le pones contraseña a la base de datos puedes pasársela al
objeto "Connection" a través del ConnectionString agregándole ";Jet
OLEDB:Database Password=miClave;".
Suerte!

Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://foro.scientia.com.ar



De: Jose Carlos [mailto:]
Expuesto a las: Sábado, 15 de Mayo de 2010 04:41 p.m.
Expuesto en: microsoft.public.es.vb
Conversación: Cifrar base de datos
Asunto: Cifrar base de datos

Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me
encuentro
con que tengo una pequeña aplicación en la que se guardan datos
personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la
aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia
Respuesta Responder a este mensaje
#2 gustavo gutierrez
16/05/2010 - 16:39 | Informe spam
On 15 mayo, 14:41, "Jose Carlos" wrote:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me encuentro
con que tengo una pequeña aplicación en la que se guardan datos personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados.  El acceso a la aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia



Hola, Puedes ponerle contraseña a la bdd y pasársela en la cadena de
conexión. Con esto ya no se puede abrir desde access sin conocer la
contraseña. El problema es que hay programas para romper las
contraseñas de access. Entonces lo mejor sería poner la contraseña ya
adicionalmente usar una rutina de encriptación al grabar todos los
datos y una de desencriptación al leerlos. si usas una función
sencilla:

Public Function Crypto(strEnt As String) As String
Dim i As Integer
For i = 1 To Len(strEnt)
Mid(strEnt, i, 1) = Chr(Asc(Mid(strEnt, i, 1)) Xor 255)
Next
Crypto = strEnt
End Function

a la cual le pases los datos antes de grabar. Si usas ADO:

rs.AddNew
rs!Clave = "" & Crypto(text(0).text)
rs!Nombre = "" & Crypto(text(1).text)
rs!Codigo = "" & Crypto(text(2).text)

al recuperar los datos se usaría la misma función:

text(0).text = "" & Crypto(rsClave)
text(1).text = "" & Crypto(rsNombre)
text(2).text = "" & Crypto(rsCodigo)

De esta forma, el fisgón tendría dos trabajos: 1.- Conseguir el
programa para crackear las claves de access (hay de paga). y 2.- al
abrir la bdd tendría que buscar la forma de desencriptar los datos.
desde luego que en la función de encriptador puedes llevarla a una
complejidad tal que se le haga extremadamente difícil la tarea y esto
lo desanime si no dispone de mucho tiempo. Se me ocurre que antes de
encriptar aumentes la complejidad del texto invirtiéndolo y además
insertándole una frase basura: tomas los caracteres del texto y cada
cierto número de caracteres le insertas uno de la frase basura, misma
que previamente invertiste. Con esto obtienes un texto con
alteraciones previas. A continuación se lo pasas a la función de
encriptado y lo grabas en la base de datos. Para sacar los datos haces
el proceso inverso. Son solo ideas que a mi me han funcionado, algo de
esto te podría servir.

Saludos!

Gustavo Gutiérrez M.
Puebla, Pue. MEXICO
Respuesta Responder a este mensaje
#3 Jose Carlos
16/05/2010 - 23:36 | Informe spam
Gracias Gustvo por tu ayuda, tendré en cuenta lo que me comentas, veré lo
que realmente exige la ley y si con ponerle una contraseña me vale, usaré
ese métod, sino tendré que usar la rutina de encriptado.

Un saludo.
Jose Carlos Garcia

"gustavo gutierrez" escribió en el mensaje de
noticias
news:
On 15 mayo, 14:41, "Jose Carlos" wrote:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me encuentro
con que tengo una pequeña aplicación en la que se guardan datos personales
y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia



Hola, Puedes ponerle contraseña a la bdd y pasársela en la cadena de
conexión. Con esto ya no se puede abrir desde access sin conocer la
contraseña. El problema es que hay programas para romper las
contraseñas de access. Entonces lo mejor sería poner la contraseña ya
adicionalmente usar una rutina de encriptación al grabar todos los
datos y una de desencriptación al leerlos. si usas una función
sencilla:

Public Function Crypto(strEnt As String) As String
Dim i As Integer
For i = 1 To Len(strEnt)
Mid(strEnt, i, 1) = Chr(Asc(Mid(strEnt, i, 1)) Xor 255)
Next
Crypto = strEnt
End Function

a la cual le pases los datos antes de grabar. Si usas ADO:

rs.AddNew
rs!Clave = "" & Crypto(text(0).text)
rs!Nombre = "" & Crypto(text(1).text)
rs!Codigo = "" & Crypto(text(2).text)

al recuperar los datos se usaría la misma función:

text(0).text = "" & Crypto(rsClave)
text(1).text = "" & Crypto(rsNombre)
text(2).text = "" & Crypto(rsCodigo)

De esta forma, el fisgón tendría dos trabajos: 1.- Conseguir el
programa para crackear las claves de access (hay de paga). y 2.- al
abrir la bdd tendría que buscar la forma de desencriptar los datos.
desde luego que en la función de encriptador puedes llevarla a una
complejidad tal que se le haga extremadamente difícil la tarea y esto
lo desanime si no dispone de mucho tiempo. Se me ocurre que antes de
encriptar aumentes la complejidad del texto invirtiéndolo y además
insertándole una frase basura: tomas los caracteres del texto y cada
cierto número de caracteres le insertas uno de la frase basura, misma
que previamente invertiste. Con esto obtienes un texto con
alteraciones previas. A continuación se lo pasas a la función de
encriptado y lo grabas en la base de datos. Para sacar los datos haces
el proceso inverso. Son solo ideas que a mi me han funcionado, algo de
esto te podría servir.

Saludos!

Gustavo Gutiérrez M.
Puebla, Pue. MEXICO
Respuesta Responder a este mensaje
#4 Victor Koch
17/05/2010 - 17:38 | Informe spam
Hola

Si te inclinas por guardar los datos encriptados manualmente en la base de
datos olvídate del 98% de los beneficios de una base de datos, por ejemplo
la simple tarea de pedirle a la base de datos un conjunto de registros
ordenado.

Un Saludo, Víctor Koch



"gustavo gutierrez" escribió en el mensaje
news:
On 15 mayo, 14:41, "Jose Carlos" wrote:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me encuentro
con que tengo una pequeña aplicación en la que se guardan datos personales
y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia



Hola, Puedes ponerle contraseña a la bdd y pasársela en la cadena de
conexión. Con esto ya no se puede abrir desde access sin conocer la
contraseña. El problema es que hay programas para romper las
contraseñas de access. Entonces lo mejor sería poner la contraseña ya
adicionalmente usar una rutina de encriptación al grabar todos los
datos y una de desencriptación al leerlos. si usas una función
sencilla:

Public Function Crypto(strEnt As String) As String
Dim i As Integer
For i = 1 To Len(strEnt)
Mid(strEnt, i, 1) = Chr(Asc(Mid(strEnt, i, 1)) Xor 255)
Next
Crypto = strEnt
End Function

a la cual le pases los datos antes de grabar. Si usas ADO:

rs.AddNew
rs!Clave = "" & Crypto(text(0).text)
rs!Nombre = "" & Crypto(text(1).text)
rs!Codigo = "" & Crypto(text(2).text)

al recuperar los datos se usaría la misma función:

text(0).text = "" & Crypto(rsClave)
text(1).text = "" & Crypto(rsNombre)
text(2).text = "" & Crypto(rsCodigo)

De esta forma, el fisgón tendría dos trabajos: 1.- Conseguir el
programa para crackear las claves de access (hay de paga). y 2.- al
abrir la bdd tendría que buscar la forma de desencriptar los datos.
desde luego que en la función de encriptador puedes llevarla a una
complejidad tal que se le haga extremadamente difícil la tarea y esto
lo desanime si no dispone de mucho tiempo. Se me ocurre que antes de
encriptar aumentes la complejidad del texto invirtiéndolo y además
insertándole una frase basura: tomas los caracteres del texto y cada
cierto número de caracteres le insertas uno de la frase basura, misma
que previamente invertiste. Con esto obtienes un texto con
alteraciones previas. A continuación se lo pasas a la función de
encriptado y lo grabas en la base de datos. Para sacar los datos haces
el proceso inverso. Son solo ideas que a mi me han funcionado, algo de
esto te podría servir.

Saludos!

Gustavo Gutiérrez M.
Puebla, Pue. MEXICO
Respuesta Responder a este mensaje
#5 Jose Carlos
17/05/2010 - 21:47 | Informe spam
Gracias Victor, no había pensado en este asunto. Pero si al final tengo que
encritar la base de datos ¿Alguna sugerencia?

Gracias.


"Victor Koch" <v i c t o r (arroba)correo(punto)waldbott(punto)com(punto)ar>
escribió en el mensaje de noticias
news:%
Hola

Si te inclinas por guardar los datos encriptados manualmente en la base de
datos olvídate del 98% de los beneficios de una base de datos, por ejemplo
la simple tarea de pedirle a la base de datos un conjunto de registros
ordenado.

Un Saludo, Víctor Koch



"gustavo gutierrez" escribió en el mensaje
news:
On 15 mayo, 14:41, "Jose Carlos" wrote:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me
encuentro
con que tengo una pequeña aplicación en la que se guardan datos
personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la
aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia



Hola, Puedes ponerle contraseña a la bdd y pasársela en la cadena de
conexión. Con esto ya no se puede abrir desde access sin conocer la
contraseña. El problema es que hay programas para romper las
contraseñas de access. Entonces lo mejor sería poner la contraseña ya
adicionalmente usar una rutina de encriptación al grabar todos los
datos y una de desencriptación al leerlos. si usas una función
sencilla:

Public Function Crypto(strEnt As String) As String
Dim i As Integer
For i = 1 To Len(strEnt)
Mid(strEnt, i, 1) = Chr(Asc(Mid(strEnt, i, 1)) Xor 255)
Next
Crypto = strEnt
End Function

a la cual le pases los datos antes de grabar. Si usas ADO:

rs.AddNew
rs!Clave = "" & Crypto(text(0).text)
rs!Nombre = "" & Crypto(text(1).text)
rs!Codigo = "" & Crypto(text(2).text)

al recuperar los datos se usaría la misma función:

text(0).text = "" & Crypto(rsClave)
text(1).text = "" & Crypto(rsNombre)
text(2).text = "" & Crypto(rsCodigo)

De esta forma, el fisgón tendría dos trabajos: 1.- Conseguir el
programa para crackear las claves de access (hay de paga). y 2.- al
abrir la bdd tendría que buscar la forma de desencriptar los datos.
desde luego que en la función de encriptador puedes llevarla a una
complejidad tal que se le haga extremadamente difícil la tarea y esto
lo desanime si no dispone de mucho tiempo. Se me ocurre que antes de
encriptar aumentes la complejidad del texto invirtiéndolo y además
insertándole una frase basura: tomas los caracteres del texto y cada
cierto número de caracteres le insertas uno de la frase basura, misma
que previamente invertiste. Con esto obtienes un texto con
alteraciones previas. A continuación se lo pasas a la función de
encriptado y lo grabas en la base de datos. Para sacar los datos haces
el proceso inverso. Son solo ideas que a mi me han funcionado, algo de
esto te podría servir.

Saludos!

Gustavo Gutiérrez M.
Puebla, Pue. MEXICO

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