FoxPro/Visual FoxPro - Problema con claves

   
Vista:
Imágen de perfil de ice

Problema con claves

Publicado por ice (2 intervenciones) el 31/07/2015 17:03:24
Hola a todos y gracias por su ayuda
Tengo una rutina para encriptar la clave de usuario, es esta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PARAMETER rclave
 PRIVATE max_len_clave
 max_len_clave = 20
 cod1 = "BDA01EFJ78GHL6MCNUOPRXYZ23STVW45IK9"
 cod2 = "EFJK9MCNUOPZ278GDAHL601RXY45IB3STVW"
 inicla = rclave
 lenrclave = LEN(rclave)
 STORE '' TO nclave
 FOR x = 1 TO lenrclave
    nclave = nclave+ALLTRIM(STR(ASC(SUBSTR(rclave, x, 1))))
 ENDFOR
 lennclave = LEN(ALLTRIM(nclave))
 IF lennclave<max_len_clave
    nclave = nclave+LEFT(cod1, max_len_clave-lennclave)
 ENDIF
 pssw = CHRTRAN(nclave, cod1, cod2)
 RETURN pssw

y la clave encriptada es 7WUUUYUKOX7W7OEFJK9M

Necesito ayuda para revertir la clave.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo Ureña

Problema con claves

Publicado por Eduardo Ureña (78 intervenciones) el 02/08/2015 01:55:00
Colega.

Su código es muy simple para que cualquiera, con un poquito de tiempo, pueda revertir cualquier clave que se guarde con esta modalidad.

La cosa es que ya existen librerías muy completas que nos permiten encriptar claves. La idea de una clave es mantenerla en secreto y bien protegida, por eso normalmene como programador no me gustan las rutinas de "desencripten" claves. Lo que hago es un programa para modificar la clave y listo y que sólo el administrador del sistema tenga acceso a ello.

En mi caso utilizo la clase Vernam (si no la tiene con gusto se la paso por correo) y su uso es tan simple como declararla al inicio, y hacer dos funciones muy simples:

SET CLASSLIB TO ubicación_de_la_clase)vernam.vcx

Para codificar una clave:

FUNCTION Codifica(xValor) &&xValor es el valor de lo digitado como clave de forma ordinaria
obj_enc=NEWOBJECT("vernam.vernam")

RETURN obj_enc.encriptarlibreta(xValor,Enc_Llave)

Y si lo desea decodificar:

FUNCTION vDeCodifica(xValor) &&xValor aquí es la cadena codificada utilizando la clase Vernam
obj_enc=NEWOBJECT("vernam.vernam")

RETURN obj_enc.desencriptarlibreta(xValor,Enc_Llave)

La clase Vernam lo que requiere es un valor que sirva de clave. Será el parámetro que llamamos en las funciones "Enc_llave" (una secuencia de caracteres a discresión). En ambas funciones debe ser la misma.

Con esto, tenés una clave robusta guardada en las bases de datos que virtualmente nadie podrá decifrar (dependiendo de la complejidad de la variable Enc_Llave que usted utilice)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con claves

Publicado por jose camilo (688 intervenciones) el 07/08/2015 13:49:48
yo no me preocuparia por revertir la clave ,
siempre guardo la clave encriprada y al buscarla simplemente paso la clave encriptada a la rutina de busqueda

un ejemplo
Locate For Alltrim(Codigo) == Alltrim(Encriptar(clave de uruario))

asi no me preocupo cual es la clave que el usuario digito no mucho menos de revertir el proceso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con claves

Publicado por ice icemanforever@airpost.net (2 intervenciones) el 11/08/2015 17:04:28
Gracias por la respuesta Jose,
implemente el codigo en otro programa que nos pidieron en clase y hasta ahora todo va bien.
El dilema es que el codigo por el cual solicite ayuda es parte de una tarea pendiente.
Nuevamente gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar