【发布时间】:2021-04-16 08:34:10
【问题描述】:
我正在尝试使用 SHA-256 加密功能,但没有成功。
我需要得到一个字符串和一个文件的哈希值。 我正在使用 Delphi 10.1 Berlin 和 Indy for Hash。
我的代码:
uses System.Classes, IdHashSha, System.SysUtils;
function GetHashF(_filename: string): string;
var
sha: TIdHashSHA256;
fs: TFileStream;
begin
if TIdHashSHA256.IsAvailable then
begin
sha:= TIdHashSHA256.Create;
try
fs:= TFileStream.Create(_filename, fmOpenRead);
try
Result:= sha.HashStreamAsHex(fs);
finally
sha.Free;
end;
finally
fs.Free;
end;
end;
function GetHashS(_string: string): string;
var
sha: TIdHashSHA256;
begin
if TIdHashSHA256.IsAvailable then
begin
sha:= TIdHashSHA256.Create;
try
Result:= sha.HashStringAsHex(_string);
finally
sha.Free;
end;
end;
end;
但每当我这样做时,它都会为这两个函数返回一个干净的字符串 ("")。
我使用断点检查它是否从IsAvaible 传递过来,它不是。
怎么回事?
【问题讨论】:
-
你是这样编码的,即使实现对你不可用,执行仍在继续。