A função Argon2id faz a aplicação do algoritmo Argon2id sobre o texto e parâmetros recebidos e retorna, em formato de binário bruto, o hash digest gerado.
Sintaxe
Argon2id( < cText >, < cSalt >, [ nMemoryCost ], [ nIterations ], [ nThreads ], [ nHashLen ], [ nLanes ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
|---|---|---|---|---|
cText | character | Texto(senha) em formato plaintext que será utilizada para gerar o Hash Digest via Argon2id. | X | |
cSalt | character | Texto que será utilizado pelo algoritmo para geração do hash. Garante que, se dois usuários tiverem a mesma senha, seus hashes finais sejam completamente diferentes no banco de dados (isso se o Salt de ambos também for diferente). | X | |
nMemoryCost | numeric | Define a quantidade de memória RAM (em Kibibytes) que o algoritmo é obrigado a usar. Valor padrão = 65536 | ||
nIterations | numeric | Define o número de passagens (iterações) que o algoritmo faz sobre a memória alocada. Valor padrão = 2 | ||
nThreads | numeric | Define o número de núcleos (threads) do processador que trabalharão simultaneamente para calcular o hash. Valor padrão = 2 | ||
nHashLen | numeric | Define o tamanho final do hash gerado (o retorno da função). Valor padrão = 128 | ||
nLanes | numeric | Define em quantas partes a memória do Argon2id é dividida para processamento paralelo. Valor padrão = 2 |
Importante
- É imprescindível salvar todos os argumentos (com exceção da senha) que foram utilizados para geração do hash pois os exatos mesmos parâmetros são necessários para validar a senha no futuro. Para maior segurança, é aconselhável que cada senha tenha seu próprio Salt aleatório.
Observações
Cenário de utilização para hashing de senhas:
Registro: Durante o cadastro da senha, o hash digest gerado pelo função Argon2id deve ser convertido para um formato textual seguro (preferencialmente Hexadecimal ou Base64) e armazenado no banco de dados junto ao Salt e aos demais parâmetros.
Autenticação: Para validar um acesso, o sistema recupera o Salt e os parâmetros do banco, gera um novo hash a partir da senha fornecida pelo usuário e os compara. Se os hashes forem idênticos, a senha é considerada válida.
Exemplos
User Function ExemploArgon2id() Local argon2id_hash := "" Local cPassword := "123456" Local cSalt := "saltsalt" Local nMemoryCost := 65536 Local nIterations := 2 Local nThreads := 2 Local nHashLen := 128 Local nLanes := 2 argon2id_hash := Argon2id(cPassword, cSalt, nMemoryCost, nIterations, nThreads, nHashLen, nLanes) Local argon2id_hash_size := len(argon2id_hash) conout(cValToChar(argon2id_hash_size)) Return
Abrangência
26.3.0.0