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)

