gpt4 book ai didi

delphi - TidHashSHA512.isavailable 在 Windows 10 上为 false

转载 作者:行者123 更新时间:2023-12-01 18:12:45 25 4
gpt4 key购买 nike

我在 Delphi XE2 上使用该函数来哈希字符串。

如果程序在 Windows 10 上运行,我会得到不好的结果 - 结果为 null,因为 TidHashSHA512.isavailableFALSE

我必须做什么?

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;

最佳答案

大多数 Indy 的 SHA 哈希值取决于您的应用程序将外部哈希库连接到 Indy。当前仅本地实现了 SHA-1(以及其他一些非 SHA 哈希值)。

要启用 SHA-512,必须在运行时分配 IdFIPS 单元中的以下回调函数指针:

  • IsHashingIntfAvail
  • UpdateHashInst
  • FinalHashInst
  • IsSHA512HashIntfAvail
  • 获取SHA512HashInst

您可以使用任何您想要的哈希库,只要将上述函数指针分配给合适的函数即可。

Indy 提供了一个使用 OpenSSL 散列函数的实现。要使用它,您可以:

  • IdSSLOpenSSLHeaders 单元添加到 uses 子句中,然后在运行时调用其 Load() 函数。

  • IdSSLOpenSSL 单元添加到 uses 子句中,然后在运行时调用其 LoadOpenSSLLibrary() 函数。

无论哪种方式,您都必须将两个 OpenSSL DLL 与您的应用程序一起分发(libeay32.dll 和 ssleay32.dll,您可以从 Indy's Fulgan mirror 下载)。请务必使用已启用 SHA-512 的编译版本。

关于delphi - TidHashSHA512.isavailable 在 Windows 10 上为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com