1

如何将默认的 THash.Hash 算法从默认的 SHA-1 更改为 MD5?

以下不起作用:

var
  StringHash: THash;
begin
  StringHash.Create(nil);
  StringHash.Hash := 'MD5';
end;

编辑:

是的,你没问题:我很抱歉没有提到 THash 是新 TurboPower LockBox 3 的一个类别。

我再次为这个遗漏道歉!

无论如何,肖恩已经给出了我正在寻找的答案。

谢谢你们

4

2 回答 2

3

假设您指的是TurboPower Lockbox的 THash 组件,您可以在运行时选择散列算法,如下所示:

function FindHashOfBananaBananaBanana: TBytes;
var
  StringHash: THash;
  Lib: TCrypographicLibrary;
begin
StringHash := THash.Create( nil);
Lib := TCrypographicLibrary( nil);
try
  StringHash.CryptoLibrary := Lib;
  StringHash.HashId := SHA512_ProgId; // Find constants for other algorithms
                                      //  in unit uTPLb_Constants.
  StringHash.HashAnsiString('Banana banana banana');
  SetLength( result, StringHash.HashOutputValue.Size);
  StringHash.HashOutputValue.Read( result[0], StringHash.HashOutputValue.Size);
  StringHash.Burn
finally
  StringHash.Free;
  Lib.Free
  end
end;
于 2011-12-14T13:41:01.550 回答
2

您的示例代码无效。变量类型为 THASH,变量名称为 STRINGHASH。当你构造一个类的实例时,格式通常是:

var
  StringHash:THash;
begin
  StringHash := THash.Create();
  try
    DoSomethingWithStringHash;
  finally
    StringHash.Free()
  end
end;

修复您的示例并返回更多详细信息。

于 2011-12-13T23:47:49.297 回答