Página 1 de 1

Criptografia e Six2

Enviado: 12 Abr 2005 11:15
por Anderson J. Freitas
Olá

Estou tentando criptografar meus bancos de dados, e executo as seguintes rotinas :

Código: Selecionar todos

 
//Para criptografar:

#include 'sixnsx.ch'
rddsetdefault('sixnsx')
new_abre('duplicat','f:\ols\teste\',.t.,'gif')
sx_setpass('ajf')
sx_dbfencrypt()
close data

//Para abrir e indexar

ferase('duplicat.nsx')
if new_abre('duplicat','f:\ols\teste\',.t.,'gif')=1
   close data
   return nil
endif
sellog = select()
if !file('log.dbf')
   novoarq('log',{{'data','d',8,0},{'hora','c',8,0},{'arquivo','c',35,0},;
          {'chave','c',20,0},{'usuario','c',35,0},{'programa','n',10,0}})
endif
use log new shared
select(sellog)
aux = indexkey()
set filter to deleted()
go top
do while !eof()
   aux2 = &aux
   select log
   adireg(0)
   replace data with date(),hora with time(),arquivo with logarquivo,;
      chave with aux2,programa with prog,usuario with gifusuario
   select(sellog)
   skip
enddo
select log
use
select(sellog)
pack
aux1 := {'loja+numero','loja+cliente+dtos(vencimento)',;
            'loja+dtos(vencimento)+numero','loja+vendedor+dtos(vencimento)',;
            'loja+banco+dtos(emissao)+numero','loja+banco+dtos(pagamento)+nume
            'loja+banco+dtos(vencimento)','loja+vendedor+dtos(pagamento)',;
            'loja+dtos(pagamento)','loja+pedido',;
            'loja+dtos(emissao)','loja+nosso'}
for x = 1 to len(aux1)
     aux2 = chr(64+x)
     aux3 = aux1[x]
     index on &aux3 tag &aux2 eval prog(x,aux1) every lastrec()/100
next

function new_abre(arq,rota,uso,sys)
*-------
 local abarq:=rota+arq+"."+sys,abind:=rota+arq,inicio:=time()
 if !file(abarq)
    @12,12 say  'Arquivo '+trim(abarq)+' nao encontrado!'
    return 1
 endif
 if uso
    use &abarq new exclusive
  else
    use &abarq new shared
 endif
 if neterr()
    telnet = sombra(10,11,14,68)
    do while neterr()
       @ 12,12 say 'Arquivo '+trim(arq)+' em uso! Aguardando liberacao..
       if uso
          use &abarq new exclusive
         else
          use &abarq new shared
       endif
    enddo
    rests(telnet)
 endif
 if !uso .and. !file(abind+'.nsx') .and. lastrec() > 1
    @12,12 say 'Indice '+trim(abind)+'.nsx nao encontrado!'
    return 1
   elseif file(abind+'.nsx')
    set index to &abind
 endif
 if sx_tabletype() = 2
    sx_setpass('ajf')
 endif
Return 0

function prog(info1,info2)
*-----
 local nporc := int(recno()/lastrec()*100)
 @13,11 say 'Indexando '+lower(dbf())+' - '+strzero(info1,if(info1>9,2,1),0)+;
            ' de '+strzero(len(info2),if(len(info2)>9,2,1),0)+' indice(s) - '+;
            transf(nporc,'999')+'% concluido'
return .t.
* No XTGold -> Ao visualizar o arquivo os dados aparecem sem criptografia.

* No DBMax -> Ao abrí-lo aparece a tela de senha, se não digitar a senha, abre sem criptografia. Se eu mudar algum registro e salvar, somente o registro modificado fica criptografado. Se eu digitar a senha, mudar algum registro, salvar, fechar e abrí-lo novamente, o registro modificado fica criptografado e não volta ao normal.

* No DBMax -> Arquivos sem criptografia ocorre o mesmo citado acima(exceto aparecer tela de senha)

* No DBNSX -> Ao abrí-lo surge a tela de corrupção :
" Error DBFNSX/1012 Corruption detected: "

Não estou conseguindo enxergar o erro, alguém pode me ajudar ?

Enviado: 12 Abr 2005 19:06
por Dudu_XBase
Me envie seu dbf.
Qdo vc executa a função de criptogragar ela retorna true ou false.
Vc verificou se a criptografia foi executada com sucesso.

Enviado: 13 Abr 2005 10:12
por Anderson J. Freitas
Dudu, não enviei o arquivo porque descobri um virus na rede que estava corrompendo todos os arquivos. Eliminei-o e agora funcionou.

Agradeço a atenção

:D