Szyfrowanie ARGON2I

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

Próbował ktoś kiedyś w projektach Delphi wprowadzić szyfrowanie haseł przez ARGON2I przy pracach z bazami MySQL?
Znalazłem na gitHub coś od JackTrapper jednak nie za bardzo to funkcjonuje.
Ma ktoś może jakieś rozwiązania?

PD
  • Rejestracja: dni
  • Ostatnio: dni
0

Do D7 może być problem.
https://github.com/Xor-el/HashLib4Pascal - jest napisane, że D2010+, ale może uda się Tobie uruchomić na D7.
Ewentualnie Lazarus

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
0

Tu zdaje się jest kompatybilny z Delphi 7

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0
Paweł Dmitruk napisał(a):

Do D7 może być problem.
https://github.com/Xor-el/HashLib4Pascal - jest napisane, że D2010+, ale może uda się Tobie uruchomić na D7.
Ewentualnie Lazarus

Dzięki, ale chyba nie pójdzie. To jest oparte na jakichś innych plikach wykonawczych, a poza tym i tak brakuje ARGON2I :(

kAzek napisał(a):

Tu zdaje się jest kompatybilny z Delphi 7

To właśnie ten komponent od JackTrapper o jakim wspomniałem. Niestety ale ma mnóstwo błędów w kodzie i kompilacja się nie powiedzie. Aczkolwiek przyznaję, że po opisie wydaje się być wręcz ideałem :)

PD
  • Rejestracja: dni
  • Ostatnio: dni
0
Zeely napisał(a):
Paweł Dmitruk napisał(a):

Do D7 może być problem.
https://github.com/Xor-el/HashLib4Pascal - jest napisane, że D2010+, ale może uda się Tobie uruchomić na D7.
Ewentualnie Lazarus

Dzięki, ale chyba nie pójdzie. To jest oparte na jakichś innych plikach wykonawczych, a poza tym i tak brakuje ARGON2I :(

obsługuje: Argon2 (2i, 2d and 2id variants)
żadnych exe ani dll nie wymaga, pakietów zewnętrznych też nie (przynajmniej w Lazarusie)

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

W takim razie jak udało Ci się go zaciągnąć do Lazarusa czy też do projektu? Bo rozumiem, że nie jest to komponent.

PD
  • Rejestracja: dni
  • Ostatnio: dni
1

nie jest to komponent, dodajesz tylko moduły do sekcji uses

Kopiuj
program Project1;

uses
  SysUtils,
  HlpIHashInfo, HlpHashFactory, HlpConverters, HlpPBKDF_Argon2NotBuildInAdapter, HlpArgon2TypeAndVersion;

function Argon2i(AIterations, AMemory, AParallelism, AOutputLength: Integer; APassword, ASalt: String): String;
var
  Argon2ParametersBuilder: IArgon2ParametersBuilder;
  Argon2Version: TArgon2Version;
  LGenerator: IPBKDF_Argon2;
  LSalt, LPassword: TBytes;
  LArgon2Parameter: IArgon2Parameters;
begin
  LSalt := TConverters.ConvertStringToBytes(ASalt, TEncoding.ASCII);
  LPassword := TConverters.ConvertStringToBytes(APassword, TEncoding.ASCII);

  Argon2Version := TArgon2Version.a2vARGON2_VERSION_13;

  Argon2ParametersBuilder := TArgon2iParametersBuilder.Builder(); //zmiana na właściwą wersję: 2d -> 2i
  Argon2ParametersBuilder.WithVersion(Argon2Version).WithIterations(AIterations)
    .WithMemoryPowOfTwo(AMemory).WithParallelism(AParallelism).WithSalt(LSalt);

  LArgon2Parameter := Argon2ParametersBuilder.Build();
  Argon2ParametersBuilder.Clear();
  LGenerator := TKDF.TPBKDF_Argon2.CreatePBKDF_Argon2(LPassword, LArgon2Parameter);

  Result := TConverters.ConvertBytesToHexString(LGenerator.GetBytes(AOutputLength), False);

  LArgon2Parameter.Clear();
  LGenerator.Clear();

end;

begin
  WriteLn(Argon2i(2, 16, 1, 16, 'password', 'somesale'));
  ReadLn;
end.    

Edit: zmiana na właściwą wersję - z Argon2d na Argon2i

ZE
  • Rejestracja: dni
  • Ostatnio: dni
0

Bardzo dziękuję Paweł, jednak niestety z Delphi 7 nie podziała.
HashLib.inc wyrzuca jasny komunikat:

Kopiuj
  // 2010 and Above
{$IFNDEF DELPHI2010_UP}
   {$MESSAGE ERROR 'This Library requires Delphi 2010 or higher.'}
{$ENDIF}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.