Funções de criptografia não funcionam com DBEdit?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

Funções de criptografia não funcionam com DBEdit?

Mensagem por labaroazul »

Estou usando as funções de Encriptação e Decriptação para proteger os dados de uma tabela. O problema é que, na hora de exibir estes dados em um dbedit, gostaria de decriptá-los para que não fiquem ilegíveis, mais não está funcionando!

Estou usando da seguinte forma:

Código: Selecionar todos


SELECT 5
    SET ORDER TO nINDICE
    SET FILTER TO EMPRESA = ENCRYPT(cEMPRESA,cEMPRESA)
    IF RECCOUNT() > 0
        GOTO TOP
    ENDIF
    SET COLOR TO N/W
    @ 01,00 TO 23,79
DBEDIT(02,01,22,78,{DECRYPT("CODIGO",cEMPRESA),DECRYPT("RAZAO",cEMPRESA),DECRYPT("FANTASIA",cEMPRESA)},"EDCLIENTES")

Código: Selecionar todos

FUNCTION DECRYPT(cTexto,cSenha)
LOCAL i,e,cri,sen,sen1,let,ret,tip

tip    = IF(VALTYPE(cSenha)="U",.t.,.f.)
cSenha = IF(VALTYPE(cSenha)="U"," ",cSenha)

e=1
ret=""
FOR i=1 TO LEN(ALLTRIM(cTexto))
    sen1=ASC(SUBSTR(cSenha,e,1))
    IF tip
        let=ASC(SUBSTR(cTexto,(LEN(ALLTRIM(cTexto))+1)-i,1))
    ELSE
    	let=ASC(SUBSTR(cTexto,i,1))
    ENDIF
    if let >= 0 .AND. let <= 31
        cri = (let+sen1)+128
    elseif let >= 32 .AND. let <= 63
        cri = (let+sen1)+64
    elseif let >= 64 .AND. let <= 95
        cri = (let+sen1)+128
    elseif let >= 96 .AND. let <= 127
	cri = (let+sen1)+64
    elseif let >= 128 .AND. let <= 159
	cri = (let+sen1)-128
    elseif let >= 192 .AND. let <= 223
	cri = (let+sen1)-128
    elseif let >= 224 .AND. let <= 255
	cri = (let+sen1)-192
    endif
    if sen1 = 33
        if substr(str(cri),LEN(str(cri)),1) $ "24680"
            cri=cri-2
        endif
        if let = 32
	    cri = 129
        elseif let = 9
            cri = 168
        elseif let = 10
            cri = 171
        elseif let = 13
            cri = 172
        endif
    else
        if let = 32
	    cri = 128
        elseif let = 9
            cri = 169
        elseif let = 10
            cri = 170
        elseif let = 13
            cri = 173
        endif
    endif
    ret+=CHR(cri)
    e++
    IF e > LEN(cSenha)
        e=1
    ENDIF
NEXT
RETURN(ret)

FUNCTION ENCRYPT(cTexto,cSenha)
LOCAL i,e,cri,sen,sen1,let,ret,tip

tip    = IF(VALTYPE(cSenha)="U",.t.,.f.)
cSenha = IF(VALTYPE(cSenha)="U"," ",cSenha)

e=1
ret=""
FOR i=1 TO LEN(ALLTRIM(cTexto))
    sen1=ASC(SUBSTR(cSenha,e,1))
    IF sen1 < 128
        sen=sen1+128
    ELSE
        sen=sen1
    ENDIF
    IF tip
        let=ASC(SUBSTR(cTexto,(LEN(ALLTRIM(cTexto))+1)-i,1))
    ELSE
    	let=ASC(SUBSTR(cTexto,i,1))
    ENDIF
    cri=sen-let
    if cri <= -64 .AND. cri >= -95
        cri = ABS(cri)
    elseif cri <= -32 .AND. cri >= -63
        cri = 128-(ABS(cri) -((ABS(cri)-32)*2))
    elseif cri <= 0 .AND. cri >= -31
        cri = ABS(cri)
    elseif cri >= 1 .AND. cri <= 32
	cri = cri+((32-cri)*2)
    elseif cri >= 33 .AND. cri <= 64
	cri = cri+(((64-cri)*2)+128)
    elseif cri >= 65 .AND. cri <= 96
	cri = cri+(((96-cri)*2)+128)
    elseif cri >= 97 .AND. cri <= 128
	cri = cri+((128-cri)*2)
    endif
    if sen1 = 33
	if let >=34
            if substr(str(cri),LEN(str(cri)),1) $ "13579"
                cri=cri+2
            endif
        endif
        if let = 64
            cri=225
        elseif let = 96
            cri=193
        elseif let = 128
            cri=33
        elseif let = 160
            cri=1
        elseif let = 192
            cri=97
        elseif let = 224
            cri=65
        endif
    endif
    ret+=CHR(cri)
    e++
    IF e > LEN(cSenha)
        e=1
    ENDIF
NEXT
RETURN(ret)

Por favor, socorro! ´o)
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
SandroBelarmino
Usuário Nível 3
Usuário Nível 3
Mensagens: 464
Registrado em: 04 Set 2007 16:11
Localização: Pedreira-SP

Re: Funções de criptografia não funcionam com DBEdit?

Mensagem por SandroBelarmino »

Tente mudar o seu código para ficar assim no dbedit:

Código: Selecionar todos

DBEDIT(02,01,22,78,{"DECRYPT(CODIGO,cEMPRESA)","DECRYPT(RAZAO,cEMPRESA)","DECRYPT(FANTASIA,cEMPRESA)"},"EDCLIENTES")
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Responder