Ir para conteúdo
  • Cadastre-se

dev botao

Gerar MD5


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

Recommended Posts

  • Moderadores
Postado

Como gerar o codigo MD5 usando os componentes ACBr?

Atualmente estou usando a função da Bematech

function md5FromFile( NomeArq: String; MD5: String ): integer; stdcall; external 'sign_bema.dll';

Postado

Tente com o ACBrEAD, veja os exemplos no EADTeste.

function TACBrEAD.MD5FromFile(const APathArquivo: String): String;
begin
  Result := String(CalcularHashArquivo(APathArquivo, dgstMD5));
end;

function TACBrEAD.MD5FromString(const AString: String): String;
begin
  Result := String(CalcularHash(AnsiString(AString), dgstMD5));
end;

 

  • Curtir 1
Consultor SAC ACBr

Celso Marigo Junior

Conheça o Portal do Projeto ACBr
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

 

  • Fundadores
  • Solution
Postado

Em Synacode.pas você tem ainda um método ainda mais simples... e que não depende de nenhuma DLL externa

{:Returns a binary string with a RSA-MD5 hashing of "Value" string.}
function MD5(const Value: AnsiString): AnsiString;  

 

  • Curtir 1
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.

Postado

Fiz um teste comparativo entre as duas opções referenciadas aqui. o GetACBrEAD.MD5FromString tem ligeira vantagem de performance na geração do MD-5. Só estranhei o fato da string resultante de um ser diferente da string resultante do  outro. Independente do método escolhido, o resultado não deveria ser o mesmo?

Postado

Testei em uma function

FUNCTION Gerar_MD5_Registro(Tabela: TDataSet): AnsiString;
VAR
  NFields, i: Integer;
  buffer    : AnsiString;
BEGIN
  buffer  := '';
  NFields := Tabela.FieldCount - 1;

  FOR i   := 0 TO NFields DO
  BEGIN
    IF (LowerCase(Tabela.Fields.FieldName) <> 'chave') THEN
    BEGIN
      IF (NOT(Tabela.Fields.IsNull)) THEN
      BEGIN
        buffer := buffer + Tabela.Fields.AsString;
      END;
    END;
  END;

  Result := FormPrincipal.ACBrPAF1.GetACBrEAD.MD5FromString(buffer);
  //Result := MD5(buffer);
END;

 

  • Fundadores
Postado

Provavelmente você está computando inclusive o campo com o HASH na segunda interação...

 MD5_1 := FormPrincipal.ACBrPAF1.GetACBrEAD.MD5FromString(buffer);
 MD5_2 := MD5(buffer);

Aqui, ambas variáveis devem conter o mesmo HASH

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.

Postado

Sim Daniel,

O retorno é binário. Eu dei uma pesquisada e vi um caso em que, após o uso do método, deve ser feita uma conversão para hexa.

Como não vi ganho de performance, vou permanecer utilizando o ACBrPAF1.GetACBrEAD.MD5FromString, não há motivos para reinventar a roda.

Obrigado..

 

  • Consultores
Postado
6 horas atrás, Daniel Simoes disse:

Realmente...

Curiouso ser mais rápido usando o EAD ( que usa o OpenSSL).

A implementação da Synapse é pascal puro...

Talvez a implementação da OpenSSL é otimizada.

[]'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.
  • Este tópico foi criado há 2906 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.