TIdHMACSHA256.TIdHMACSHA384.TIdHMACSHA512在Delphi中不起作用

Maj*_*eri 3 delphi indy

为什么TIdHMACSHA256 +(Indy/delphi)的HashValue函数总是返回空?例如,下面的代码不起作用.

var
  Hash: TIdHMACSHA256 ;
  HashValue: TBytes;
begin
  SetCurrentDir(ExtractFilePath(ParamStr(0)));
  Hash := TIdHMACSHA256 .Create;
  try
    Hash.Key := TEncoding.ASCII.GetBytes('devaee2');
    HashValue := Hash.HashValue(TFile.ReadAllBytes('menu.xml'));
    // HashValue is an empty array, why?
    Tag := Length(HashValue);
    TFile.WriteAllBytes('menu.xml.hash', HashValue);

  finally
    FreeAndNil(Hash);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 7

问题是您没有成功加载实现哈希所需的OpenSSL库.打电话IdSSLOpenSSL.LoadOpenSSLLibrary.您还需要确保您的程序可以找到合适的OpenSSL DLL.