Как изменить THash.Hash во время выполнения - PullRequest
1 голос
/ 13 декабря 2011

Как изменить алгоритм THash.Hash по умолчанию с SHA-1 по умолчанию на MD5?

Не работает следующее:

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

Редактировать:

Да, с вами все в порядке: я прошу прощения за то, что не упомянул тот факт, что THash является классом нового TurboPower LockBox 3.

Еще раз извиняюсь за это упущение!

В любом случаеШон уже дал ответ, который я искал.

Спасибо всем

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

Предполагая, что вы ссылаетесь на компонент THash TurboPower Lockbox , вы можете выбрать алгоритм хеширования во время выполнения следующим образом:

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;
2 голосов
/ 14 декабря 2011

Ваш пример кода недействителен.Тип переменной - THASH, имя переменной - STRINGHASH.Когда вы создаете экземпляр класса, формат обычно такой:

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

Исправьте ваш пример и вернитесь с более подробной информацией.

...