Recent

Author Topic: [Solved] Argon2id and AES  (Read 486 times)

Swirl

  • New Member
  • *
  • Posts: 27
[Solved] Argon2id and AES
« on: April 16, 2025, 03:45:40 pm »
Dear forum members,

I'd like to use Argon2id for key derivation and AES for encryption and Ugochukwu's libraries hashlib4pascal and cryptolib4pascal.
Since I have a problem to analye the sources, I'd be happy if someone could provide a line for...
  • The key derivation (I assume salt is handled by Argon2id)
  • The verification of the derivation using the given passphrase
  • The encryption using AES 256
Please don't laugh at me for using Cryptography but not being able to interpret the source code of the libraries.

Regards,
Mike

« Last Edit: April 17, 2025, 09:05:34 am by Swirl »
Lazarus 3.0 - FPC 3.2.2 on Windows and Linux Mint

cdbc

  • Hero Member
  • *****
  • Posts: 2150
    • http://www.cdbc.dk
Re: Argon2id and AES
« Reply #1 on: April 16, 2025, 05:52:29 pm »
Hi
There are some examples, here in the forum, on using @XorEl's libraries, you only need to search for them...
Regards Benny
If it ain't broke, don't fix it ;)
PCLinuxOS(rolling release) 64bit -> KDE5 -> FPC 3.2.2 -> Lazarus 3.6 up until Jan 2024 from then on it's both above &: KDE5/QT5 -> FPC 3.3.1 -> Lazarus 4.99

Swirl

  • New Member
  • *
  • Posts: 27
Re: Argon2id and AES
« Reply #2 on: April 16, 2025, 09:18:54 pm »
Sorry,

I had 6 hits but there is no example how to "key derive" using Argon2id.
Maybe somebody can provide a code snippet concerning my 3 points mentioned above.

I mostly found input from Xor-el and Thaddy with regard to encryption but unfortunately not with regard to Argon2id.

Regards,
Mike
Lazarus 3.0 - FPC 3.2.2 on Windows and Linux Mint


paweld

  • Hero Member
  • *****
  • Posts: 1375
Re: Argon2id and AES
« Reply #4 on: April 16, 2025, 10:16:54 pm »
Arfgon2I sample:
Code: Pascal  [Select][+][-]
  1. program Project1;
  2.  
  3. uses
  4.   SysUtils,
  5.   HlpIHashInfo, HlpHashFactory, HlpConverters, HlpPBKDF_Argon2NotBuildInAdapter, HlpArgon2TypeAndVersion;
  6.  
  7. function Argon2i(AIterations, AMemory, AParallelism, AOutputLength: Integer; APassword, ASalt: String): String;
  8. var
  9.   Argon2ParametersBuilder: IArgon2ParametersBuilder;
  10.   Argon2Version: TArgon2Version;
  11.   LGenerator: IPBKDF_Argon2;
  12.   LSalt, LPassword: TBytes;
  13.   LArgon2Parameter: IArgon2Parameters;
  14. begin
  15.   LSalt := TConverters.ConvertStringToBytes(ASalt, TEncoding.ASCII);
  16.   LPassword := TConverters.ConvertStringToBytes(APassword, TEncoding.ASCII);
  17.  
  18.   Argon2Version := TArgon2Version.a2vARGON2_VERSION_13;
  19.  
  20.   Argon2ParametersBuilder := TArgon2iParametersBuilder.Builder(); //zmiana na właściwą wersję: 2d -> 2i
  21.   Argon2ParametersBuilder.WithVersion(Argon2Version).WithIterations(AIterations)
  22.     .WithMemoryPowOfTwo(AMemory).WithParallelism(AParallelism).WithSalt(LSalt);
  23.  
  24.   LArgon2Parameter := Argon2ParametersBuilder.Build();
  25.   Argon2ParametersBuilder.Clear();
  26.   LGenerator := TKDF.TPBKDF_Argon2.CreatePBKDF_Argon2(LPassword, LArgon2Parameter);
  27.  
  28.   Result := TConverters.ConvertBytesToHexString(LGenerator.GetBytes(AOutputLength), False);
  29.  
  30.   LArgon2Parameter.Clear();
  31.   LGenerator.Clear();
  32.  
  33. end;
  34.  
  35. begin
  36.   WriteLn(Argon2i(2, 16, 1, 16, 'password', 'somesale'));
  37.   ReadLn;
  38. end.    

AES sample: https://forum.lazarus.freepascal.org/index.php/topic,67874.msg523743.html#msg523743
« Last Edit: April 16, 2025, 10:19:00 pm by paweld »
Best regards / Pozdrawiam
paweld

Swirl

  • New Member
  • *
  • Posts: 27
[Solved] Re: Argon2id and AES
« Reply #5 on: April 17, 2025, 09:03:51 am »
Thx korba812 and paweld!
Now I can use Xor-el's  libraries.

Kind Regards,
Mike
Lazarus 3.0 - FPC 3.2.2 on Windows and Linux Mint

 

TinyPortal © 2005-2018