funciones _encrypt() y _decrypt()

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
Ismach
Posts: 161
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina

funciones _encrypt() y _decrypt()

Post by Ismach »

Estimados

Esta funcion genera un .ini con el mismo nombre que el ejeutable
y graba por default un valor para cada item de la seccion "Login"
y despues conecta a oracle y la aplicacion arranca de diez, el problema que tengo es que cuando
despues que cierro la aplicacion y vuelvo a ejecutarla que el valor
recuperado y desencriptado para el item "Server" me pierde un digito y no se
es cuando encripta o cuando desencripta de manera ya no puedo conectar a oracle
Las funciones _encrypt() y _decrypt() estan bien usadas asi?
En el main defini:

Code: Select all

static cUser  := "alondra"      // USUARIO
static cPass  := "alondra"      // PASSWORD
static cHost  := "naqdesa"      // NOMBRE DEL HOST
static cBase  := "naqdesa"      // ALIAS TNS BASE ORACLE DEL AMBIENTE
static cProv  := "MSDAORA.1"    // PROVEEDOR DEL API CONNECTOR
static cFech  := "20160121"     //

Code: Select all


FUNCTION Gus_OpenConfig()

    LOCAL ceHost
    LOCAL ceUser
    LOCAL cePass
    LOCAL ceFech
    LOCAL cPASSWORD := "push"

    ccConfig := Get_NameProgram( hb_ProgName() ) + ".ini"

    IF FILE( ccConfig )
        BEGIN INI FILE ( ccConfig )
             GET ceHost     SECTION "Login"   ENTRY "Server"
             GET ceUser     SECTION "Login"   ENTRY "User"
             GET cePass     SECTION "Login"   ENTRY "Haslog"
             GET ceFech     SECTION "Login"   ENTRY "DatePM"
        END INI

        cHost  :=  _decrypt( ceHost , cPASSWORD )
        cUser  :=  _decrypt( ceUser , cPASSWORD )
        cPass  :=  _decrypt( cePass , cPASSWORD )
        cFech  :=  _decrypt( ceFech , cPASSWORD )

        cxCtrl := "Server=" + cHost + hb_OsNewLine() + ;
                  "User="   + cUser + hb_OsNewLine() + ;
                  "Haslog=" + cPass + hb_OsNewLine() + ;
                  "DatePM=" + cFech + hb_OsNewLine()
        msginfo(cxCtrl)

    ELSE
        ceHost  := _encrypt( cHost , cPASSWORD )
        ceUser  := _encrypt( cUser , cPASSWORD )
        cePass  := _encrypt( cPass , cPASSWORD )
        ceFech  := _encrypt( cFech , cPASSWORD )

        BEGIN INI FILE ( ccConfig )
              SET SECTION "Login"   ENTRY "Server"   TO ceHost
              SET SECTION "Login"   ENTRY "User"     TO ceUser
              SET SECTION "Login"   ENTRY "Haslog"   TO cePass
              SET SECTION "Login"   ENTRY "DatePM"   TO ceFech
        END INI

    ENDIF

RETURN NIL
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

funciones _encrypt() y _decrypt()

Post by Pablo César »

Hola, no informaste con cual version trabajás y si es UNICODE o ANSI.
Puede ser alli la raíz de tu problema.
Ismach wrote: Mon Jan 23, 2017 2:59 pm me pierde un digito y no se es cuando encripta o cuando desencripta
Fijate en el archivo INI editandolo con el Notepad++.

Y si es posible copiá para otro archivo entre el encripta y el descripta y fijate.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
Ismach
Posts: 161
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina

Re: funciones _encrypt() y _decrypt()

Post by Ismach »

la version que tengo instalada es HMG 3.42 UNICODE
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: funciones _encrypt() y _decrypt()

Post by Pablo César »

Pablo César wrote: Mon Jan 23, 2017 3:09 pm Y si es posible copiá para otro archivo entre el encripta y el descripta y fijate.
Te fijaste ?
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
Ismach
Posts: 161
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina

Re: funciones _encrypt() y _decrypt()

Post by Ismach »

Si instale 3.4.3 unicode y con algunas password funciona y con otras no... la verdad que no entiendo.
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

funciones _encrypt() y _decrypt()

Post by Pablo César »

Ismach wrote: Tue Jan 24, 2017 2:59 pm Si instale 3.4.3 unicode
Buenisimo !
Ismach wrote: Tue Jan 24, 2017 2:59 pm con algunas password funciona y con otras no
Vos dijiste que estarias grabando password en INI. Y me viene a la cabeza que por ser archivo INI (archivo texto y ahora en UNICODE, que algo facilita) podria estar no estar consiguiendo convertir la variable en cracter. Eso poque el encriptado puede generar caracteres que no sean facil de convertir.
Pablo César wrote: Mon Jan 23, 2017 8:10 pm Y si es posible copiá para otro archivo entre el encripta y el descripta y fijate.
Pablo César wrote:Te fijaste ?
Ismach wrote: Tue Jan 24, 2017 2:59 pm la verdad que no entiendo
Por eso te decia, que te fijes en el archivo INI. Lo podés abrir con cualquier editor de textos. El motivo es para que analizes en contenido de esas variables. Si no sabés como hacerlo, hacé asi:

Despues de tu código:

Code: Select all

        BEGIN INI FILE ( ccConfig )
             GET ceHost     SECTION "Login"   ENTRY "Server"
             GET ceUser     SECTION "Login"   ENTRY "User"
             GET cePass     SECTION "Login"   ENTRY "Haslog"
             GET ceFech     SECTION "Login"   ENTRY "DatePM"
        END INI
Agregale a la linea siguiente fuera del END INI (abajo):
hb_MemoWrit("Archivo1.TXT",ceHost + CRLF + ceUser + CRLF + cePass + CRLF + ceFech + CRLF)

Y despues agregale otra linea despues de tu código:

Code: Select all

        BEGIN INI FILE ( ccConfig )
              SET SECTION "Login"   ENTRY "Server"   TO ceHost
              SET SECTION "Login"   ENTRY "User"     TO ceUser
              SET SECTION "Login"   ENTRY "Haslog"   TO cePass
              SET SECTION "Login"   ENTRY "DatePM"   TO ceFech
        END INI
Con en la otra: hb_MemoWrit("Archivo2.TXT",ceHost + CRLF + ceUser + CRLF + cePass + CRLF + ceFech + CRLF)


Asi vas a crear dos archivos que lo puedes comparar y llegar a una conclusion.

Otra cosa que me viene es que leí en el ChangeLog del Harbour que habia un bug en las funciones de criptografia. No sé si es el caso, pero habria que comparar los archivos que vengo diciendote.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
Ismach
Posts: 161
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina

Re: funciones _encrypt() y _decrypt()

Post by Ismach »

Antes que nada Gracias por tu dedicacion... si el .ini ya lo vi varias veces e inclusive antes hice
varias pruebas encriptando archivos de texto pequeños y despues comparando, no siempre sucede, sino con algunas claves
hice la prueba y ambos tiene mismo contenido y comparando con el Total Commander dice que son identicos

Code: Select all

25/01/2017  03:37 p.m.    <DIR>          .
25/01/2017  03:37 p.m.    <DIR>          ..
23/01/2017  03:55 p.m.                33 achi.bat
20/01/2017  05:49 p.m.               647 Allobnp.ch
25/01/2017  03:37 p.m.         1.453.056 Allobnp.exe
18/10/2007  12:37 p.m.             2.238 Allobnp.ico
25/01/2017  03:37 p.m.                69 Allobnp.ini
23/01/2017  06:30 p.m.            13.965 Allobnp.prg
24/01/2017  11:49 a.m.             1.193 Allobnp.rc
23/01/2017  12:14 p.m.                69 Allobnp___INI.TEX
25/01/2017  03:37 p.m.                34 Archivo1.TXT
25/01/2017  03:37 p.m.                34 Archivo2.TXT
23/01/2017  04:24 p.m.               425 build.bat
25/01/2017  03:36 p.m.             3.414 Config.prg
23/01/2017  12:12 p.m.               153 cpl.bat
20/01/2017  06:00 p.m.    <DIR>          Include
23/01/2017  04:11 p.m.    <DIR>          Res
gracias. le cambie la clave y ahi funciona
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

funciones _encrypt() y _decrypt()

Post by Pablo César »

Antes que nada Gracias por tu dedicacion...
:)

Ahh que bueno que lo pudiste solucionar.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
Ismach
Posts: 161
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina

Re: funciones _encrypt() y _decrypt()

Post by Ismach »

Hay que tener mucho cuidado al usar las funciones de encriptacion, porque
con algunas claves de encriptacion se pierde el ultimo digito, no se si es al encriptar o deencriptar.
Despues voy a subir un ejemplo.
User avatar
Ismach
Posts: 161
Joined: Wed Nov 28, 2012 5:55 pm
DBs Used: DBF, mySQL, Mariadb, postgreSQL, Oracle, Db2, Interbase, Firebird, and SQLite
Location: Buenos Aires - Argentina

Re: funciones _encrypt() y _decrypt()

Post by Ismach »

Solucion definitiva... use las funciones cedidas por el El Guille estan en el .zip del link

http://www.hmgforum.com/viewtopic.php?f ... =10#p32693

funciona muy bien
Post Reply