La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4161 - ENCRIPTAR CABECERAS DE TABLAS DBF
Autor:  Sergio Gómez de Travesedo Rojas
Hola amigos de LWP:

Recurro a vosotros para ver si podeis ayudarme con un problemilla que tengo...ahí va:

Estoy realizando un programa, en estado muy avanzado, y necesito proteger los datos de mis tablas contra la lectura no autorizada, es decir trato de que nadie pueda acceder a mis tablas si no es a traves de mi programa, ya que considero contienen una información muy valiosa que ha costado mucho esfuerzo y horas introducir; para ello pretendo codificar la cabecera de las tablas, ya que al estar avanzado el proyecto no puedo encriptar los registros, pues sería una tarea harto laboriosa. Y mis preguntas son:
¿como puedo hacer esto? ¿y luego como las desencripto? ¿hay algun método para asignar una contraseña de acceso a la tabla? ¿puedo luego introducir esa contraseña desde código?

Por favor ayudenme..., Estoy dandole vueltas pero no consigo nada.
Muchas Gracias.

  Respuesta:  roberto
Hola, mi nombre es Roberto y espero poder ayudarte.

Antes que nada debes saber como se almacena un archivo .DBF y para eso hay un documento en la siguiente dirección.

http://www.fpress.com/revista/Num9906/Jun99.htm

Este documento trata como se almacena un dbf.

Ahora que comprendes como se almacena debes implementar una rutina como la que implemente yo para lamacenar datos, solo que tu hazlo para una cadena. Esta rutina te encripta y te desencripta dependiendo de la posición de un caracter dentro de una cadena, espero y te sirva y adelante amigo.



PROCEDURE EncoDeco
Parameters Cadena
NuevaCadena = "" &&Variable donde se almacenará la cadena Encriptada

use d:\Roberto\Claves.dbf order cClave

Contador = len(alltrim(Cadena)) &&Variable que contendrá la longitud de la cadena normal
for i = 1 to Contador
cChar = substr(alltrim(Cadena),i,1) &&substracción caracter a caracter del registro
cChar = asc(cChar) &&Devuelve el codigo ansi del caracter
cRango = 200 - (cChar + i) &&Se realiza la encriptación
NuevaCadena = NuevaCadena + chr(cRango) &&Se almacena caracter a caracter la cadena encriptada
endfor

seek(alltrim(NuevaCadena))
if found()
wait window "El Registro ya se encuentra....."
else
append blank
replace cClave with alltrim(NuevaCadena)&&Reemplaza la clave con la clave ya encriptada
wait window "Registro almacenado"
endif
return