Ir para conteúdo
  • Cadastre-se

dev botao

Geração de MD5 no banco de dados


Ver Solução Respondido por Régys Silveira,
  • Este tópico foi criado há 4350 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores
Postado

Bom dia a todos

Em muitos aplicativos fiscais eu vejo que, em tabelas de movimentação como a capa do cupom, itens do cupom, redução z e etc... tem um campo de md5 o qual serve para comparar na hora da geração dos arquivos eletrônicos (???????????). Pelo que analisei aqui, no cadastro da empresa usuária e dos ecf's cadastrados tenho que ter o md5 gravado tbm para futura geração os arquivos citados. Já vasculhei cada tópico do fórum e não acho algo que me clareie as ideias. Cheguei a achar uma função que gera o md5 com de um dataset (que será bastante útil nesse caso). E tem também o componente ACBrPAF que vai gerar os arquivos.

Será que alguém pode me orientar com relação à geração desses MD5?

Obrigado pela atenção

Abraço

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Moderadores
Postado

no caso daniel, eu vejo que o EAD consegue gerar MD5 de string. Tem até alguns pontos aqui onde já utilizo.

Então vou utiliza-lo para gerar MD5 dos registros no banco de dados. Me corrija se estiver errado.

No caso da tabela de ecf, quais campos tenho que utilizar para montar a string e gerar o md5?

Talvez seja mais fácil vc me dizer qual o registro no ACBrPAF que contem o formato para o registro que preciso, assim vc não precisa me passar especificações

Grato desde já

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Moderadores
Postado

Aqui o que tenho feito e proteger o registro inteiro, sempre antes de gravar eu monto uma string com os valores do registro todo, adiciono uma chave e gero o md5.

Outra coisa que tenho feito e separar as tabelas que gravam dados para arquivos do Paf-ECF das tabelas que uso para trabalhar, por exemplo tenho tabelas para o R02, R03, R04, R05, R06, R07, etc, etc, assim fica mais simples de fazer os testes no dia da homologação, e eu tenho total controle delas e não atrapalha os testes nem as validações.

Quanto aos registros que devem ser protegidos é como o Daniel falou mesmo, na ER tem uma parte que fala direitinho cada um deles, o melhor caminho e seguir por lá mesmo.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Moderadores
Postado

Entendi regys. Pensando la no final com certeza é o melhor caminho. Quando vc diz que protege o registro gerando um MD5 dele todo, é que fiquei curioso. Vc vai somando um campo no outro? Ex. campo1 + campo2 + campo3.... ou tem um layout? tamanho formato e posição de cada campo e depois gera o MD5?

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Moderadores
Postado

Pequeno exemplo:


var
Texto: string;
MD5Registro: String;
begin
Texto := EmptyStr;
for i := 0 to Dataset.Fields.count do
begin
if Dataset.Fields[i].FieldName 'MD5' then
texto := texto + Dataset.Fields[i].asstring;
end.

Texto := Texto + 'chave';

MD5Registro := ACBrEAD.MD5FromString(Texto);
end;
[/code]

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Consultores
Postado

Provavelmente você não viu esse tópico:

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Moderadores
Postado

Pequeno exemplo:


var

  Texto: string;

  MD5Registro: String;

begin

  Texto := EmptyStr;

  for i := 0 to Dataset.Fields.count do

  begin

    if Dataset.Fields[i].FieldName <> 'MD5' then

      texto := texto + Dataset.Fields[i].asstring;

  end.


  Texto := Texto + 'chave';


  MD5Registro := ACBrEAD.MD5FromString(Texto);

end;

Já havia visto essa rotina regys. É como eu suspeitava mesmo. Uma última dúvida:

Ali no trecho: Texto := Texto + 'chave';

essa chave pode ser única? tipo assim: ser sempre 1234? é apenas um exemplo. O Elton lembrou da função function TDao.GeraChave():string; Posso usar ela para gerar uma chave única para o momento?

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Moderadores
Postado

a chave tem que ser conhecida, porque depois você precisa dela para montar e gerar o MD5 que será comparado com o que está gravado e validar.

Certo, entendi. Posso usar minha chave pública ou privada, para não ter que ficar criando chaves diferentes?

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Moderadores
Postado

A publica não, porque a pública todo mundo vai conhecer, agora a privada sim é uma boa idéia.

Lembre-se:

- chave privada = use para assinar, somente você conhece, isso para qualquer coisa

- chave publica = usada para validar a assinatura, essa é entregue a todo mundo que interesse validar algo que você assinou

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Moderadores
Postado

Pessoal, continuando a utilização desse tópico...

 

Estou trabalhando na venda e itens e me deparei com a seguinte situação. Sempre que eu vender um item eu tenho que ir na tabela de produtos e alterar o MD5? levando em conta que realizo a baixa de estoque, sendo assim alterei meu registro no banco de dados.

 

Obrigado...

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • Consultores
Postado

Se o seu estoque estiver na tabela de produtos, sim.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Sim.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Fundadores
Postado
Puxa, mas com um grande volume de transações, vai ficar bem complicado, não?

Use uma trigger no seu Banco de Dados... e deixe o BD calcular o Hash...

(isso se o seu BD permitir a definição de variáveis por contexto)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Este tópico foi criado há 4350 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.