Árvore de páginas

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. Sempre deve ser menor que o parâmetro nLanes. 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. Sempre deve ser maior que o parâmetro nThreads. Valor padrão = nThreads



Retorno

Em caso de sucesso, retorna o hash digest gerado no tamanho do nHashLen definido na chamada da função.

Em caso de falha, retorna uma string vazia ("").

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 exemplo 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


Referências

RFC9106: https://www.rfc-editor.org/rfc/rfc9106.html

  • Sem rótulos