[vfp] Encriptar / Desencriptar password de usuario

4,564 views
Skip to first unread message

Javier Sanchez

unread,
May 7, 2013, 9:15:33 AM5/7/13
to publice...@googlegroups.com
Buenos días gente,

Quisiera saber como encriptar y desencriptar contraseñas en ibexpert (firebird) ó en Visual foxpro 8.

Puedo consultar directamente con alguna función en ibexpert?

Si alguien puede aportar su conocimiento se lo voy a agradecer.

Que tengan un excelente día.

Saludos,
--
Javier D. Sánchez

Jairo Miranda

unread,
May 7, 2013, 9:26:04 AM5/7/13
to publice...@googlegroups.com

Programa Encriptar.prg

 

Function Codi  

  *Encripta

  Parameters string_x

  entrega_x = ""

  DIMENSION CRIP(LEN(string_x))

  FOR i = 1 TO LEN(string_x)

      crip(i) = ASC(SUBSTR(string_x,i,1))  && entrega numero

  ENDFOR

  *

  FOR i = 1 TO LEN(string_x)

      crip(i) = crip(i) + 2 && al ASC le suma dos

  ENDFOR

  *

  j = LEN(string_x)

  FOR i = 1 TO LEN(string_x)

      entrega_x = entrega_x + CHR(crip(j))

      j=j-1

  ENDFOR

  Return entrega_x

****************************

FUNCTION DECOD

 *desencripta

Parameters string_x

DIMENSION CRIP(LEN(string_x))

entrega_x = ""

string_x  = ALLTRIM(string_x)

FOR i = 1 TO len(string_x)

     crip(i) = ASC(SUBSTR(string_x,i,1))  && entrega numero

NEXT

*

FOR i = 1 TO len(string_x)

     crip(i) = crip(i) - 2

NEXT

*

j = len(string_x)

FOR i = 1 TO len(string_x)

     entrega_x = entrega_x + CHR(crip(j))

     j=j-1

NEXT

Return entrega_x

 

JM

Arnaldo Toledano

unread,
May 7, 2013, 9:58:43 AM5/7/13
to publice...@googlegroups.com
En portal fox hay un método muy bueno de Luis Maria Guayan.
Lo utilizo y me ha dado buenos resultados.
La gracia esta que utiliza una palabra clave, lo que te permite tener mayor seguridad.
No la encuentro en Portal Fox, quizás algún colega tenga el LINK.


Arnaldo Toledano
--
Arnaldo Toledano Tesys Informática Córdoba Argentina

Javier Sanchez

unread,
May 7, 2013, 12:08:20 PM5/7/13
to publice...@googlegroups.com
Muchas gracias gente! Estaré probando lo que me pasaron.

Saludos.
--
Javier D. Sánchez
Analísta de Sistemas
     15-2176-4035

Ing.Daniel Bojorge

unread,
May 7, 2013, 1:03:48 PM5/7/13
to publice...@googlegroups.com
Abajo pongo el método que yo usaba antes (con VFP), lo bajé (creo) de PortalFox.


&& USO: Encriptar("ONN","Guardar Datos Encriptados","@#$%&")
&& PARAMETROS
&& lcEncrypt = Tipo de Encriptacion ("ONN" = Encriptar) ("OFF" = DESENCRIPTAR)
&& lcString = Texto a Encriptar
&& lcClave = Clave que desea ponerle al texto encriptado, debe de ser la misma para cuando se desee desencriptar el texto ya encriptado.

FUNCTION Encriptar (lcEncrypt, lcstring,lcClave)

IF TYPE("lcEncrypt") = "L" .OR. TYPE("lcString") = "L" .OR. TYPE("lcClave") = "L"
     RETURN .F.
ENDIF

LOCAL lnlencript
lnlencript = LEN(ALLTRIM(lcEncrypt))
IF lcEncrypt <> "ONN" .AND. lcEncrypt <> "OFF" .OR. lnlencript> 3
    MESSAGEBOX("Modo de Encriptación Invalida. Verifique.!!",48+0+0,"ERROR == MODO ENCRIPTAR")
    RETURN .F.
ENDIF

LOCAL lnlen, lcnewstring, retval, lcchar, maxca, c
maxca = 100
c = 1
IF lcencrypt = "ONN"
    lnlen = LEN(ALLTRIM(lcstring))
    lcnewstring = ""
    FOR j = 1 TO lnlen
            lcchar = MOD(ASC(SUBSTR(lcstring, j, 1)) + ASC(SUBSTR(lcClave, c, 1)), 256)
            lcnewstring = (lcnewstring + CHR(lcchar))
            c = (c + 1)
            IF c >= LEN(lcClave)
                c = 1
            ENDIF
    ENDFOR
    retval = lcnewstring
ENDIF

IF lcencrypt = "OFF"
    lnlen = LEN(ALLTRIM(lcstring))
    lcnewstring = ""
    FOR j = 1 TO lnlen
        lcchar = MOD((256 + ASC(SUBSTR(lcstring, j, 1))) - ASC(SUBSTR(lcClave, c, 1)), 256)
        c = (c + 1)
        IF c >= LEN(lcClave)
            c = 1
        ENDIF
        lcnewstring = (lcnewstring + CHR(lcchar))
    ENDFOR
    retval = lcnewstring
ENDIF
RETURN retval

ENDFUNC 


Y lo usaba así:

Encriptar("OFF",Clave,"¬Rom8.28¬")
ncriptar("ONN",Allt(pClave),"¬Rom8.28¬")


Ahora que estoy más con SQL Server, prefiero que la misma base de datos encripte en algo parecido al MD5.




Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
www.debsconsultores.com
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

Mauricio R. Molinero

unread,
May 7, 2013, 5:10:11 PM5/7/13
to publice...@googlegroups.com
Si son contraseñas de acceso a un DBRMS, podes guardarlas en Blowfish asi las recuperas.
Pero si realmente son contraseñas de usuarios solamente deberias guardas el hash MD5 y cuando vuelve a loguear validas hash tipeado contra hash en la base de datos.

Aqui un articulo con tecnias como salting,


Saludos!

Mauricio R. Molinero,

Carlos Miguel FARIAS

unread,
May 8, 2013, 6:07:52 AM5/8/13
to Grupo Fox

Coincido con Mauricio. No se deben guardar contraseñas cifradas. Se deben guardar los hash. Si alguien accede a la tabla de usuarios, podrá descifrar las contraseñas cifradas, pero solo adivinar las hasheadas (o lograr un sinónimo).
Por ejemplo con un simple CRC32. Hay 2**32 valores posibles. Teóricamente pueden lograr un sinónimo después de unos 50.000 intentos. En vfp CRC32 lo logras con SYS(2007,...). Pero debe estar disponible en casi cualquier lugar y no es el único disponible.
Saludos: Miguel, La Pampa (RA)

Fernando D. Bozzo

unread,
May 8, 2013, 7:02:53 PM5/8/13
to publice...@googlegroups.com
Lo bueno del sistema de hash que comentan los compañeros, es que, aunque el administrador pueda blanquear la contraseña y poner otra, nunca podrá saber que palabra o frase se usó de contraseña, con lo que por lo menos la privacidad de la elección se mantiene secreta, y no como en muchos sistemas donde se guarda en texto plano o cifrada, pero que puede verse, recuperarse o desencriptarse y se pierde esa privacidad.

Es por estos sistemas que cada tanto se publican las contraseñas más usadas de la red.


Saludos.-

Carlos Miguel FARIAS

unread,
May 8, 2013, 7:18:45 PM5/8/13
to Grupo Fox
En algún lado lei que unix "hashea" como 20 veces la contraseña.
Ojo.
Una buena contraseña no debe ser una sola palabra o un simple número, y tener 8 o más caracteres.
Aún con hash, si te roban el archivo de contraseñas, y usas palabras simples, toman cada hash y lo corren contra un diccionario que tiene las palabras de direccionario y su respectivo hash.
Saludos: Miguel, La Pampa (RA)

Ing.Daniel Bojorge

unread,
May 8, 2013, 7:24:21 PM5/8/13
to publice...@googlegroups.com
Acá les dejo una web que "valora", qué tan segura es tu contraseña.  Pueden probar poner palabras que creen que es segura como contraseña y les dará una "idea" de si es cierto o no.



Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
www.debsconsultores.com
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)


Reply all
Reply to author
Forward
0 new messages