Recent

Author Topic: Protegendo DBF com DCPCRYPT  (Read 7679 times)

ezlage

  • Guest
Protegendo DBF com DCPCRYPT
« on: December 03, 2011, 01:34:08 am »
Meus caros, tudo bom?

Estou desenvolvendo um aplicativo que funcionará a partir de pendrives. Tanto em Linux quanto em Windows. E não é um mecanismo malicioso, ok?!

Tal aplicativo codifica as bases DBF e decodifica quando as acessa.
Porém se o programa estiver aberto, qualquer um pode abrir os DBFs com um editor de texto e ver todos os dados sem controle de acesso algum.

Então estive pensando em decodificar o DBF em memória e carregá-lo a partir de lá, sem que o DBF decodificado fique disponível no disco.

Acontece que não tenho idéia de como fazer isso, sou iniciante no Lazarus e gostaria da ajuda de vocês.

Obrigado!

ezlage

  • Guest
Re: Protegendo DBF com DCPCRYPT
« Reply #1 on: May 28, 2012, 09:54:48 pm »
Encode file to disk:

  chave:string;  //passphrase
  cam:string; //path of file


Code: [Select]
function CodTabela(i:integer):boolean;
var
  motor:TDCP_rc6;
begin
  result:=True;
          try
            mst[i].Position:=0; //memory stream
            fst[i]:=TFileStream.Create(cam,fmCreate); //file stream
            motor:=TDCP_rc6.Create(nil);
            motor.InitStr(chave,TDCP_sha512);
            motor.EncryptStream(mst[i],fst[i],mst[i].Size);
            motor.Burn;
            motor.Free;
            fst[i].Free;
            mst[i].Free;
          except
            result:=False;
          end;
end;

Decod file to memory:

Code: [Select]
function DecodTabela(i:integer):boolean;
var
  motor:TDCP_rc6;
begin
  result:=True;
          try
            mst[i]:=TMemoryStream.Create;
            fst[i]:=TFileStream.Create(cam,fmOpenRead);
            motor:=TDCP_rc6.Create(nil);
            motor.InitStr(chave,TDCP_sha512);
            motor.DecryptStream(fst[i],mst[i],fst[i].Size);
            motor.Burn;
            motor.Free;
            fst[i].Free;
          except
            result:=False;
          end;
end;

rocka1

  • New Member
  • *
  • Posts: 21
Re: Protegendo DBF com DCPCRYPT
« Reply #2 on: July 11, 2012, 12:34:45 am »
Boas, estou tentando algo parecido, mas com o sqlite3 , visto querer utilizar no Windows Mobile e no Android.

Coloquei uma questão muito parecida aqui:
http://forum.lazarus.freepascal.org/index.php/topic,17479.0.html

Se por acaso alguém tiver solução, fico agradecido.

Lembro que, segundo apurei, o Sqlite3Dataset não deixa carregar através de stream, ao contrário do caso aqui apresentado .

O meu obrigado antecipado :-)

ezlage

  • Guest
Re: Protegendo DBF com DCPCRYPT
« Reply #3 on: July 12, 2012, 11:53:41 pm »
Eu vi lá, mas já havia sido solucionado. =D
O ludob sempre ajuda a gente. haha
Abraço.

rocka1

  • New Member
  • *
  • Posts: 21
Re: Protegendo DBF com DCPCRYPT
« Reply #4 on: July 13, 2012, 10:03:31 pm »
ezlage , já agora quero-te também agradecer por este teu post, que também foi uma boa ajuda  ;)

ezlage

  • Guest
Re: Protegendo DBF com DCPCRYPT
« Reply #5 on: July 19, 2012, 02:56:25 pm »
rocka1, como você faz pra transportar os dados do MemoryStrem para o seu componente?
Ele usa o parâmetro ':memory:', ao que me parece você usa isso só pra armazenamento temporário?
Sabe de algum jeito de se ter os dados codificados no disco, decodificar em memória e usá-lo no SQLite?

Agradeço desde já.

rocka1

  • New Member
  • *
  • Posts: 21
Re: Protegendo DBF com DCPCRYPT
« Reply #6 on: July 21, 2012, 02:52:28 am »
Para os utilizadores/leitores deste tema não "ficarem perdidos", só consegui na minha aplicação devolver o stream para ficheiro.

Mas tendo em atenção que na minha aplicação usei o sqlite3backup, que não me permitiu ler do memorystream mas apenas de ficheiro.

http://www.lazarus.freepascal.org/index.php/topic,17479.msg96592.html#msg96592


 

TinyPortal © 2005-2018