Delphi TidHashSHA512.isavailable在Windows 10上为false
我在Delphi XE2上使用该函数来散列字符串 如果程序在Windows 10上运行,我会得到一个糟糕的结果-结果是Delphi TidHashSHA512.isavailable在Windows 10上为false,delphi,indy,Delphi,Indy,我在Delphi XE2上使用该函数来散列字符串 如果程序在Windows 10上运行,我会得到一个糟糕的结果-结果是null,因为tidhasha512.isavailable是FALSE 我该怎么办 function HashSHA512String(Text: String): String; var IdHashSHA512: TIdHashSHA512; begin Result := ''; if HashFunctionsOpenSSLLoaded then begin
null
,因为tidhasha512.isavailable
是FALSE
我该怎么办
function HashSHA512String(Text: String): String;
var
IdHashSHA512: TIdHashSHA512;
begin
Result := '';
if HashFunctionsOpenSSLLoaded then begin
if TIdHashSHA512.IsAvailable then begin // <-- ADD THIS
IdHashSHA512 := TIdHashSHA512.Create;
try
Result := IdHashSHA512.HashStringAsHex(Text);
finally
FreeAndNil(IdHashSHA512);
end;
end;
end;
end;
函数HashSHA512String(文本:String):String;
变量
IdHashSHA512:TIdHashSHA512;
开始
结果:='';
如果HashFunctionsPensslLoaded,则开始
如果tidhasha512.IsAvailable,那么开始//大部分Indy的SHA哈希依赖于你的应用程序将外部哈希库连接到Indy。目前只有SHA-1(在其他几个非SHA散列中)是本机实现的
要启用SHA-512,必须在运行时分配IdFIPS
单元中的以下回调函数指针:
ishashingintfail
UpdateHashInst
FinalHashInst
IsSHA512HashIntfAvail
GetSHA512HashInst
只要将上述函数指针分配给合适的函数,就可以使用任何所需的哈希库
Indy提供了一个使用OpenSSL哈希函数的实现。要使用它,您可以:
- 将
IdSSLOpenSSLHeaders
单元添加到uses
子句中,然后在运行时调用其Load()
函数
- 将
IdSSLOpenSSL
单元添加到uses
子句中,然后在运行时调用其LoadOpenSSLLibrary()
函数
无论哪种方式,您都必须随应用程序分发两个OpenSSL dll(libeay32.dll和ssleay32.dll,您可以从中下载)。请确保使用已启用SHA-512编译的版本。请格式化代码块以使其更具可读性。非常感谢,这就是问题所在。使用2个DLL,它正在运行