Página 1 de 1

HB_Base64Encode(): funcão e exemplos

Enviado: 09 Dez 2010 19:35
por Maya Fiuza
Olá Fórum!
Um cliente pede para cifrar todos os dados de 3 tabelas (diversos campos numéricos, strings e data).
Alguém teria um exemplo de uso da HB_Base64Encode() ou de outra função [x]Harbour. Não quero usar LIBs de terceiros.
Obrigada.

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 09 Dez 2010 19:46
por Maligno
Base64 não é utilizado em criptografia. É um método utilizado para codificar conjuntos de dados por meio de uma tabela fixa de 64 caracteres (RFC989). É muito utilizado para transporte de arquivos (principalmente binários) em clientes de correio. Aliás, pode-se dizer que é o primo "rico" do UUEncode.

Para criptografia você terá de utilizar outro recurso. Talvez possa criar o seu próprio algoritmo. Não é tão complexo.

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 10 Dez 2010 11:34
por anacatacombs
A mais comum, é por substituição. Por exemplo, a letra A corresponde a "Z".
Realmente não é complexo, no entanto, é preciso elaborar um algoritmo mais complexo para dificultar a quebra da criptografia.

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 10 Dez 2010 13:51
por Maya Fiuza
Então... Uma tabela tem 987.000 registros/24 colunas, outra 512.00 reg/4 col e outra varia de 200.000 a 800.000 reg /56 col.
Preciso deixar cifradas, e apenas o app ler e add cifrado. Estou receosa de que uma UDF não escrita em assembler ou C, sacrifique a velocidade.
Lendo alguns tópicos, tentei usar a SIX (parece ter este propósito), mas não consegui. Alguém poderia postar um curto exemplo da HBsix?

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 10 Dez 2010 15:31
por Maligno
Estou receosa de que uma UDF não escrita em assembler ou C, sacrifique a velocidade.
Pelas quantidades que citou, sua preocupação faz todo sentido.

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 10 Dez 2010 18:20
por rochinha
Amiguinha,

Sua preocupacao é manter sigilosos os dados dos registros somente, sem mexer na estrutura.

Bom, no meu caso, eu uso a criptografia do conteudo em tempo de execução, ou seja, quando o sistema pega os dados do registro, identifica se o mesmo esta criptografado e desgrafa, mostra nas telas e permite alteração, grafando novamente ao salvar o registro.

Neste tópico apresento uma solução totalmente livre de terceiros.

Analise, modifique, melhore e use.

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 10 Dez 2010 19:07
por Toledo
Dê uma olhada neste exemplo:

Código: Selecionar todos

#include "dbinfo.ch"

procedure main()

     local aStruct := { ;
         { "Nome", "C", 30, 0 }, ;
         { "Endereco", "c", 25, 0 }, ;
         { "Niver", "D", 8, 0 } ;
     }

     Set Century On
     Set Date To British

     request dbfcdx
     rddsetdefault("DBFCDX")
     if !file("teste.dbf")
      dbcreate("teste", aStruct)

      use teste

      teste->( dbappend() )
      teste->nome := "Paulo Cesar Toledo"
      teste->Endereco := "Rua Afonso Pena, 1277"
      teste->niver := ctod("29/05/1962")
      teste->( dbappend() )
      teste->nome := "Maya Fiuza"
      teste->Endereco := "Rua dos Maias, 1122"
      teste->niver := ctod("10/12/1985")
     else
      use teste
     endif
     go top
    
     //Encrypta os registros atraves de uma senha
     teste->( dbinfo( DBI_ENCRYPT,"pctoledo" ) )
     go top
     Browse()
     teste->( dbclosearea() )  //fecha o arquivo

     //Abre o arquivo, mas os registro estao encryptados
     use teste
     Browse()

     //informando a senha correta, os registro podem ser vistos corretamente
     teste->( dbinfo( DBI_PASSWORD, "pctoledo" ) )
     Browse()
     teste->( dbclosearea() )

return
Utilizei o Harbour 2.1.

Abraços,

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 13 Dez 2010 14:53
por Maya Fiuza
Olá, fico agradecida por todos os exemplos!
Toledo, mais uma vez sua indicação foi fantástica, caiu como uma luva! Novamente, muito grata.

Em tempo: existe algum manual do Harbour 2.0?
Onde posso obter uma descrição detalhada (qualquer idioma) das novas funções do Harbour?
Queria ver mais detalhes da DbInfo( )...

Re: HB_Base64Encode(): funcão e exemplos

Enviado: 13 Dez 2010 16:13
por Toledo
Maya, dê uma olhada neste link, acho que já ajuda:

Procure em "Functions"/"Functions by name"
http://www.oohg.org/manual/harbour/

Para mais detalhes sobre os parâmetros desta função (DBINFO), veja o arquivo dbinfo.ch na pasta \INCLUDE do seu Harbour.

Abraços,