为什么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)
问题是您没有成功加载实现哈希所需的OpenSSL库.打电话IdSSLOpenSSL.LoadOpenSSLLibrary.您还需要确保您的程序可以找到合适的OpenSSL DLL.