Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Revertir Sh-256 base 64 (https://www.clubdelphi.com/foros/showthread.php?t=96135)

esublim 26-02-2023 02:00:48

Revertir Sh-256 base 64
 
Código Delphi [-]
function calcularHash(const mensaje,key:string; descifrar: boolean):string;
var
  hash:THashSHA2;
begin
result:=thash.DigestAsString(hash.GetHMACAsBytes(mensaje,key,SHA256));
end;

Código Delphi [-]
function GetStrHashSHA256(Str: String): String;
var
  HashSHA: THashSHA2;
begin
    HashSHA := THashSHA2.Create;
    HashSHA.GetHashString(Str);
    result := upperCase(HashSHA.GetHashString(Str,SHA256));
end;


hola tengo estas dos funciones que me trabajan de maravilla.
el problema es que cifro del hash pero como hagoo para descrifar.

me podrian dar una idea

esublim 26-02-2023 04:55:40

o algun codigo ejemplo para delphi 11 de cifrado aes -256

Casimiro Notevi 26-02-2023 10:03:27

Recuerda poner títulos descriptivos a tus mensajes, "hash" no dice nada de qué problema quieres resolver. Gracias.
Recuerda nuestra guía de estilo, saludos.

Casimiro Notevi 26-02-2023 16:56:54

Este código utiliza la clase TIdHashSHA256 de la librería Indy para calcular el hash SHA256. El método HashStringAsHex se utiliza para obtener el hash en formato hexadecimal. El cifrado se realiza en el Button1Click y el descifrado en el Button2Click. En ambos casos, se crea una instancia de TIdHashSHA256, se llama al método correspondiente y se libera la memoria al final.

Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdHashSHA;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  HashSHA256: TIdHashSHA256;
begin
  HashSHA256 := TIdHashSHA256.Create;
  try
    Edit2.Text := HashSHA256.HashStringAsHex(Edit1.Text);
  finally
    HashSHA256.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  HashSHA256: TIdHashSHA256;
begin
  HashSHA256 := TIdHashSHA256.Create;
  try
    Edit1.Text := HashSHA256.HashStringAsHex(Edit2.Text);
  finally
    HashSHA256.Free;
  end;
end;

end.

esublim 26-02-2023 18:37:24

Revertir Sh-256 base 64
 
hola tengo un sistemita sencillo con el siguiente codigo
Código Delphi [-]
Memo2.Text:= TNetEncoding.Base64.EncodeBytesToString(THashSHA2.GetHMACAsBytes(Memo1.Text,Edit7.Text, SHA256));

que genera lo mismo que esta wb : https://www.devglan.com/online-tools/hmac-sha256-online

pero el problema es como hago para revertirlo. es decir leer el código generado a la cadena inicial.

Casimiro Notevi 26-02-2023 19:19:58

Seguramente tienes un Base64.Decode...

esublim 26-02-2023 19:33:28

Cita:

Empezado por Casimiro Notevi (Mensaje 550595)
Este código utiliza la clase TIdHashSHA256 de la librería Indy para calcular el hash SHA256. El método HashStringAsHex se utiliza para obtener el hash en formato hexadecimal. El cifrado se realiza en el Button1Click y el descifrado en el Button2Click. En ambos casos, se crea una instancia de TIdHashSHA256, se llama al método correspondiente y se libera la memoria al final.

Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdHashSHA;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  HashSHA256: TIdHashSHA256;
begin
  HashSHA256 := TIdHashSHA256.Create;
  try
    Edit2.Text := HashSHA256.HashStringAsHex(Edit1.Text);
  finally
    HashSHA256.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  HashSHA256: TIdHashSHA256;
begin
  HashSHA256 := TIdHashSHA256.Create;
  try
    Edit1.Text := HashSHA256.HashStringAsHex(Edit2.Text);
  finally
    HashSHA256.Free;
  end;
end;

end.

no me funciono

duilioisola 27-02-2023 09:31:00

Cita:

Empezado por esublim (Mensaje 550598)
no me funciono

Como no digas qué es lo que no funcionó o cuál es el mensaje de error, poco podrán ayudarte...

Imagínate que un cliente te llama y te dice "no funciona". ¿Cómo sigue la conversación?
¿Qué es lo que no funciona?
¿Cuál es el mensaje de error?
¿Qué pasos sigues para llegar al error?
¿Qué datos utilizas como parámetros?

Podrías ahorrar estos pasos y explicarlos porque la respuesta podría ser: "a mi si me funciona" y no estaríamos resolviendo nada.


La franja horaria es GMT +2. Ahora son las 20:45:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi