elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Almacenar datos en archivos... TRABAJAR SIN DB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Almacenar datos en archivos... TRABAJAR SIN DB  (Leído 3,027 veces)
panditdas

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Almacenar datos en archivos... TRABAJAR SIN DB
« en: 13 Marzo 2018, 16:02 pm »

Buen día con todos, tengo una duda que siempre me ha perseguido, espero me puedan ayudar a resolverla o orientarme que camino debo de tomar, he desarrollado una aplicación de escritorio, la cual tiene una sencilla base de datos en Access en la cual registro al usuario del sistema, los clientes de este usuario y ademas datos que se necesitan almacenar de esta aplicación...

Por otro lado trabajo una tabla de números predefinidos(varias files y columnas), pero como estas tablas son datos sensibles las cargo cada vez que el cliente utiliza la aplicación en arrays bidimensionales, luego según sea el caso recorro el array y cargo los datos según sea lo que necesite el usuario del sistema.

Esta segunda parte es muy tediosa para trabajar, ya que las tablas llegan a tener varias filas y columnas...

Mi pregunta es:

¿como hago para trabajar con archivos locales que almacenen todos estos datos(las tablas y los datos como usuario,contraseña,cliente,etc) pero que no sean legibles por el usuario?

Todo esto desde el VB 6.0, se que esta descontinuado pero aun trabajo mi proyecto ahi...

Espero poder haberme explicado de la mejor forma, Gracias.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Almacenar datos en archivos... TRABAJAR SIN DB
« Respuesta #1 en: 13 Marzo 2018, 16:51 pm »

¿como hago para trabajar con archivos locales que almacenen todos estos datos(las tablas y los datos como usuario,contraseña,cliente,etc) pero que no sean legibles por el usuario?

La operación de trasladar la estructura de un objeto a un archivo local se conoce como serialización de objetos:


En tu caso te interesaría la serialización binaría de objetos, ya que precisas un formato "ilegible".

Todo esto desde el VB 6.0, se que esta descontinuado pero aun trabajo mi proyecto ahi...

En VB6 no sabría decirte ya que hace siglos que no lo utilizo, pero según lo que estoy investigando, al parecer no provee ninguna característica para la des/serialización binaria de datos (en cambio al parecer si para la serialización XML, pero el formato XML es muy "legible" así que esa opción no te interesaría). Deberías migrar a .NET Framework si realmente deseas mejorar potenciálmente ese proyecto en todos los aspectos.

Saludos


« Última modificación: 13 Marzo 2018, 17:06 pm por Eleкtro » En línea



Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Almacenar datos en archivos... TRABAJAR SIN DB
« Respuesta #2 en: 14 Marzo 2018, 02:50 am »

Ciertamente migrar a NET te ayudaría, pero no hay que ser drástico, puedes perfectamente operar con VB6 y ocultar datos del usuario... la operación básica se llama cifrado.

- Una sencilla forma es codificarlo por ejemplo en Base64 (o base32 o base16, pero con base64, tendrás un tamaño más ligero).
- No obstante esto es solo codificado (un cambio de código), no queda cifrado... para cifrarlo de modo sencillo, puedes usar el operador lógico XOR, con uso de alguna clave.
- Si exiges contraseña, exige SIEMPRE una contraseña de al menos 16 caracteres... nunca menor.

0 - Al iniciar el programa solicitas la clave al usuario. La clave, no la guardas ni la mantienes en memoria, simplemente se usa para generar un array muy grande (1Mb. por ejemplo) y esa puede ser la clave de cfrado y descifrado.
Podrías verificar si la clave es correcta o no antes de seguir, pero en general es preferible no hacerlo excepto si se han de modificar los ficheros... sí o sí. (por ejemplo imagina winrar, si vas a extraer un contenido (el original queda intacto), no importa verificar si la clave es correcta, simplemente se usa como si fuera, el resultado será urliburli, si no es la clave correcta, pero ha empeñado su tiempo en intentar descifrarlo, eso le da resistencia a intentos de fuerza bruta.
En cambio si el original ha de ser modificado, entonces es exigible asegurarse que la clave es correcta antes de modificar nada.
Para ello creas un array de contenido aleatorio (cuando se genera la aplicación), y realizas un hash a dicho contenido. Luego lo cifras y lo escribes a fichero y detrás el hash resultante.
Cuando se abre la aplicación y se solicita la contraseña y a partir de ella generas la clave, la usas para descifrar ese fichero en memoria (descontando esos bytes finales del hash), luego lo hasheas y veriificas que el hash coincide con el que aparece al final del fichero... si es ok, procedes a seguir cargando la aplicación, si no libera toda la memoria, y avisas del error de contraseña antes de cerrar la aplicación o exigir nuevamente la contraseña.
 
1 - Empiezas leyendo todo el contenido de un fichero en un array de bytes, luego cierras el fichero. Descifras usando la clave de 1Mb. byte a byte mediante xor. Si el fichero es mayor que la clave (1Mb. hemos dicho), vuelves a comenzar usando la clave desde el comienzo.
Tras esto, si todavía está codificado en base64, lo decodificas... y procede igual con cada fichero.

2 - Cuando debas escribir a fichero (haz lo mismo en orden inverso).
Primero codifícalo a base64 (si lo crees conveniente) y luego lo cifras con la misma clave (la función es la misma para cifrar que para descifrar).

Recuerda siempre sobrescribir el array que es la clave con contenido aleatorio antes de liberar el array...

Si los datos no son especialmente sensibles, posiblemente te baste con codificarlo en base64 y listo, pero si hay datos más sensibles, mejor cífralo.
No importa el orden:
 Si primero codificas a base64 y luego cifras
 O si primero cifras y luego codificas a base64.
Pero si debe es tener en cuenta dicho orden seguido para el momento de leer o escribir el fichero...
 

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
almacenar archivos en python
Scripting
Division-x 2 3,026 Último mensaje 19 Septiembre 2006, 19:26 pm
por Division-x
¿Como almacenar datos desde WEB a una base de datos?
PHP
Clavo Oxidado 4 3,252 Último mensaje 14 Junio 2007, 21:14 pm
por newinl
Como Almacenar Datos en una Base de Datos Remota, en un hosting
Programación Visual Basic
Franc_979 0 2,303 Último mensaje 7 Septiembre 2007, 18:39 pm
por Franc_979
Almacenar datos
Scripting
Wexex5 0 1,749 Último mensaje 8 Septiembre 2015, 15:28 pm
por Wexex5
Almacenar datos de GPS en web
Dispositivos Móviles (PDA's, Smartphones, Tablets)
Hadess_inf 0 3,435 Último mensaje 2 Noviembre 2017, 21:20 pm
por Hadess_inf
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines