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?
Szyfrowanie ARGON2I
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gorlice
Tu zdaje się jest kompatybilny z Delphi 7
- Rejestracja: dni
- Ostatnio: dni
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 :)
- Rejestracja: dni
- Ostatnio: dni
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 LazarusDzię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)
- Rejestracja: dni
- Ostatnio: dni
W takim razie jak udało Ci się go zaciągnąć do Lazarusa czy też do projektu? Bo rozumiem, że nie jest to komponent.
- Rejestracja: dni
- Ostatnio: dni
nie jest to komponent, dodajesz tylko moduły do sekcji uses
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
- Rejestracja: dni
- Ostatnio: dni
Bardzo dziękuję Paweł, jednak niestety z Delphi 7 nie podziała.
HashLib.inc wyrzuca jasny komunikat:
// 2010 and Above
{$IFNDEF DELPHI2010_UP}
{$MESSAGE ERROR 'This Library requires Delphi 2010 or higher.'}
{$ENDIF}