如何在运行时更改THash.Hash

时间:2011-12-13 15:50:24

标签: delphi lockbox-3

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

以下不起作用:

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

编辑:

是的,你没事:我为没有提到THash是新TurboPower LockBox 3的一类而道歉。

我再次为此遗漏道歉!

无论如何,肖恩已经给出了我想要的答案。

谢谢大家

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

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

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

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