-
vegarulez © (07.06.16 22:50) [0]не могу понять почему в edit_hmac.Text пустота...
Подскажите, вроде всё делаю верно.function EncryptHMACSha1(Input, AKey: string): TIdBytes;
begin
with TIdHMACSHA1.Create do
try
Key := ToBytes(AKey);
Result := HashValue(ToBytes(Input));
finally
Free;
end;
end;
procedure TForm1.btn_hmacClick(Sender: TObject);
var
t: TIdBytes;
begin
t := EncryptHMACSha1('test', edit_pswd.Text);
edit_hmac.Text := BytesToString(t, 0, MaxInt);
end; -
vegarulez © (13.06.16 14:33) [1]Вроде всё получилось. Хэш hmac(sha-1) собрал. ToHex вместо BytesToString и всё заработало. Только резульата по умолчанию UpperCase поэтому для полного счастья LowerCasefunction EncryptHMACSha1(Input, AKey: string): TIdBytes;
begin
with TIdHMACSHA1.Create do
try
Key := ToBytes(AKey);
Result := HashValue(ToBytes(Input));
finally
Free;
end;
end;
procedure TForm1.btn_hmacClick(Sender: TObject);
var
t: TIdBytes;
begin
t := EncryptHMACSha1('test', edit_pswd.Text);
edit_hmac.Text := LowerCase(ToHex(t));
//edit_hmac.Text := BytesToString(t, 0, MaxInt);
end;
Кому надо вот ссылка для проверки:
http://www.freeformatter.com/hmac-generator.html#ad-output -
vegarulez © (13.06.16 15:50) [2]Вернее даже так(для удобства):
function EncryptHMACSha1(Input, AKey: string): string;
begin
with TIdHMACSHA1.Create do
try
Key := ToBytes(AKey);
Result := LowerCase(ToHex(HashValue(ToBytes(Input))));
finally
Free;
end;
end;
procedure TForm1.btn_hmacClick(Sender: TObject);
begin
edit_hmac.Text :=EncryptHMACSha1(edit_data_hmac.Text, edit_pswd.Text);
end; -
vegarulez © (13.06.16 15:56) [3]использовались indy 10 и ессно не забудьте добавить в uses :
uses
IdHMACSHA1, IdGlobal
ну и еессно чтобы в либах пути были до файлов
IdHMACSHA1.dcu, IdHMACSHA1.pas,
IdGlobal.dcu, IdGlobal.pas