Histórico da Página
...
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 pelo algoritmo.
Sintaxe
| Bloco de código | ||
|---|---|---|
| ||
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 usuário senha tenha seu próprio Salt aleatório.
Observações
Cenário exemplo de utilização para hashing de senhas:
...
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
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