Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

Argon2_4D

Implementação da DLL do argon2 no delphi.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Argon 2

Argon2 é um algoritmo de hashing de senhas moderno e seguro, vencedor da Password Hashing Competition de 2015. Ele protege contra ataques de força bruta, GPUs e ASICs ao exigir alto uso de memória, tempo e paralelismo. A variante principal, Argon2id, é recomendada por equilibrar resistência contra diferentes tipos de ataque.

Principais características e vantagens:

  • Vencedor da PHC 2015: Considerado o padrão ouro para armazenamento de senhas atualmente.
  • Configurável: Permite ajustar o custo de memória, tempo (iterações) e paralelismo (threads).
  • Resistente: Projetado para ser difícil de quebrar usando hardware especializado (GPUs) e ataques de canal lateral.
  • Variantes
    • Argon2d: Mais resistente a GPUs, ideal para ataques de GPU (criptomoedas).
    • Argon2i: Mais resistente a ataques de canal lateral, ideal para senhas.
    • Argon2id: Híbrido, combina os dois acima e é a recomendação padrão (RFC 9106).

O Argon2 é amplamente considerado superior ao bcrypt e scrypt devido à sua alta configurabilidade e resistência a hardware avançado.

Por convenção, o Argon2 gera um hash de senha como uma string no formato:

$Argon2id$v=[version]$m=[memoryKB],t=[type],p=[parallelism]$[salt]$[hash] $argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$VGhpcyB3YXMgb25seSBhbiBleGFtcGxlLCBpIGRvbid0IGFjdHVhbGx5IGhhdmUgYSB2YWxpZCBpbXBsZW1udA==

As partes da string são:

Value Meaning Notes
argon2id Hash algorithm "argon2id", "argon2d", argon2i"
v=19 Decimal coded version Default is 0x13, which is 19 decimal
m=65536 Memory size in KiB Valid range: 8*Parallelism .. 0x7fffffff, and must be a power of two
p=4 Parallelization Factor 1-0x00ffffff
salt base64 encoded salt 0-16 bytes decoded
hash base64 encoded hash 32-bytes

HDArgon2

HDArgon2 é uma implementação da DLL do Argon2 implementada no repositório https://github.com/P-H-C/phc-winner-argon22

Support: rtinformatica.ti@gmail.com

Instalação

Para instalar em seu projeto usando boss:

bash
$ boss install github.com/Rtrevisan20/Argon2_4D

O boss.json na raiz do repositório é obrigatório: a engine 3.x do Boss falha ao instalar dependências que não possuem esse arquivo.

Versões

O Boss resolve a versão pelas tags do Git (ex.: 0.0.6), não pelo campo version do boss.json. Mantenha os dois em sincronia e crie a tag após alterar a versão:

bash
# última versão (maior tag)
$ boss install github.com/Rtrevisan20/Argon2_4D

# versão específica
$ boss install github.com/Rtrevisan20/Argon2_4D:0.0.6

Instalação Manual

Adicione as seguintes pastas ao seu projeto, em Project > Options > Delphi Compiler > Search path

pascal
../hdargon2/src

Uses necessárias

pascal
uses HDArgon24D;

Funções e propriedades

Properts

pascal
Iterations  = Quantidade de intera????es
Memory      = Quantidade de mem??ria que ser?? usada em KiB
Parallelism = Quantidade de Threads

Functions

pascal
GenerateHash(const aPass: string): string;
VerifyPassword(const aHash, aPass: string): boolean;
IdHashEncoded(const aPass: string): string;
HashEncodedVerify(const aHash, aPass: string): boolean;

Como usar

A DLL testada foi compilada no dia 05/03/2026 na arquitetura X64. Copie a DLL libargon2.dll para a pasta do seu executável do seu sistema, e é só usar a biblioteca.

  • Gerando o hash
delphi
  TArgon2.Iterations  := 4;
  TArgon2.Memory      := 65536 ou 128*1024; //65 mb ou 128 mb
  TArgon2.Parallelism := 4;
  var hash := TArgon2.GenerateHash('SuaSenhaSuperSegura');
  • Validando a senha com o Hash
delphi
  if TArgon2.VerifyPassword('HashSalvoNoBancoDeDados', 'SuaSenhaSuperSegura') then
    ShowMessage('Senha está correta') else
    ShowMessage('A senha não est correta');