[DELPHI] CRIPTOGRAFIA MD5

Criptografia é o ato de codificar dados em informações aparentemente sem sentido, para que pessoas não consigam ter acesso às informações que foram cifradas. 


MD5

O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc.

A partir de uma texto de um tamanho qualquer, ele gera um valor hash de 128 bits; com este algoritmo, é computacionalmente impraticável descobrir duas mensagens que gerem o mesmo valor. O resultado será uma hash de 32 caracteres.

Por ser um algoritmo unidirecional, um hash MD5 não pode ser transformado novamente no texto que lhe deu origem. 

Segue abaixo o código completo:

unit uPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdHashMessageDigest;

type
  TFrmPrincipal = class(TForm)
    edtTextoMD5: TEdit;
    btnTextoMD5: TButton;
    mmoTextoMD5: TMemo;
    edtArquivoMD5: TEdit;
    btnArquivoMD5: TButton;
    mmoArquivoMD5: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    procedure btnTextoMD5Click(Sender: TObject);
    procedure btnArquivoMD5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function MD5Texto(const texto: string): string;
    function MD5Arquivo(const arquivo: string): string;
  end;

var
  FrmPrincipal: TFrmPrincipal;

implementation

{$R *.dfm}
{ TFrmPrincipal }

// criptografar um arquivo
procedure TFrmPrincipal.btnArquivoMD5Click(Sender: TObject);
begin
  mmoArquivoMD5.Lines.Add(MD5Arquivo(edtArquivoMD5.Text));
end;

procedure TFrmPrincipal.btnTextoMD5Click(Sender: TObject);
begin
  mmoTextoMD5.Lines.Add(MD5Texto(edtTextoMD5.Text));
end;

function TFrmPrincipal.MD5Arquivo(const arquivo: string): string;
var
  md5: TIdHashMessageDigest5;
  fs: TFileStream;
begin
  if not FileExists(arquivo) then
  begin
    Result := 'Arquivo não encontrado, verique o endereço informado!';
    exit;
  end;

  md5 := TIdHashMessageDigest5.Create;
  fs := TFileStream.Create(arquivo, fmOpenRead OR fmShareDenyWrite);
  try
    Result := md5.HashStreamAsHex(fs);
  finally
    fs.Free;
    md5.Free;
  end;
end;

// criptografar uma string
function TFrmPrincipal.MD5Texto(const texto: string): string;
var
  md5: TIdHashMessageDigest5;
begin
  md5 := TIdHashMessageDigest5.Create;
  try
    Result := md5.HashStringAsHex(texto);
  finally
    md5.Free;
  end;
end;


end.

Download

Gostou? Deixe seu comentário... Convido você a seguir meu blog, sua presença é bem vinda!【ツ】

Nenhum comentário:

Postar um comentário