Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Indy-Dateien für HMACSHA256 Hash (https://www.delphipraxis.net/209532-indy-dateien-fuer-hmacsha256-hash.html)

EdAdvokat 17. Dez 2021 15:45

Indy-Dateien für HMACSHA256 Hash
 
Ich möchte mit Hilfe von Indy-Dateien eine HMAC-Funktion aufrufen. Dazu habe ich bei stackoverflow nachfolgende
function gefunden und versuche vergeblich sie aufzurufen, denn beim Aufruf erhalte ich die Fehlermeldung "SHA256 hashing is not avaible!"
Fehlt da möglicherweise eine dll? Leider habe ich dazu bislang noch keinen brauchbaren Hinweis gefunden.
Die nachfolgende function wird im I-net mehrfach erwähnt und sollte daher doch funktionieren - oder ?
Was mache ich falsch oder was fehlt da noch?
Delphi-Quellcode:
uses
  IdGlobal, IdHashSHA, IdHMAC, IdHMACSHA1, IdSSLOpenSSL;

function CalculateHMACSHA256(const value, salt: String): String;
var
  hmac: TIdHMACSHA256;
  hash: TIdBytes;
begin
  LoadOpenSSLLibrary;
  if not TIdHashSHA256.IsAvailable then
    raise Exception.Create('SHA256 hashing is not available!');
  hmac := TIdHMACSHA256.Create;
  try
    hmac.Key := IndyTextEncoding_UTF8.GetBytes(salt);
    hash := hmac.HashValue(IndyTextEncoding_UTF8.GetBytes(value));
    Result := ToHex(hash);
  finally
    hmac.Free;
  end;
end;

Klaus01 17. Dez 2021 15:59

AW: Indy-Dateien für HMACSHA256 Hash
 
.. muss die Klasse TidHashSHA256 vor der Verwendung nicht erzeugt werden?

.. gibt es dies bei Tokyo noch nicht -> https://docwiki.embarcadero.com/Libr...2&oldid=719348

Grüße
Klaus

mjustin 17. Dez 2021 16:02

AW: Indy-Dateien für HMACSHA256 Hash
 
Es sieht so aus als müssten die OpenSSL DLLs verwendet werden.
Diese einfach in das Verzeichnis der Anwendung legen. Indy unterstützt OpenSSL 1.0.2, deren letzte Version ist 1.0.2u

EdAdvokat 17. Dez 2021 16:24

AW: Indy-Dateien für HMACSHA256 Hash
 
Danke mjustin.
Das war's. Ich ahnte doch das da irgendwelche dll fehlen sollten und habe zwar die libeay32.dll hinzugefügt, doch das reichte nicht. Jetzt funktioniert es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz