Saltar para o conteúdo principal
Versão: Próximo

Generate password hash

Generate password hash ( senha {; opções} ) : Text

ParâmetroTipoDescrição
senhaTextA senha do usuário. Só os primeiros 72 caracteres são usados
opçõesObjectUm objeto contendo opções
ResultadoTextRetorna a senha hashed

Descrição

A função Generate password hash devolve um hash de senha seguro gerado por um algoritmo de hash criptográfico.

Passe um valor de string no parâmetro senha. Generate password hash devolve uma string de hash para a senha. Múltiplos passes da mesma senha darão lugar a strings hash diferentes.

No objeto opções, passe as propriedades que se utilizarão ao gerar o hash da senha. Os valores disponíveis são mostrados na tabela abaixo:

PropriedadeTipo de valorDescriçãoValor por padrão
algorithmstringalgoritmo que se utilizará. Atualmente só se admite "bcrypt" (sensível a maiúsculas e minúsculas).bcrypt
costnuméricovelocidade que se utilizará. Os valores admitidos para bcrypt estão entre 4 e 31.10

Nota: se um valor no objeto de opções não for válido, se devolverá uma mensagem de erro e uma string vazia.

Gestão de erros

The following errors may be returned. You can review an error with the Last errors and ON ERR CALL commands.

NumberMessage
850Password-hash: Unsupported algorithm.
852Password-hash: Unavailable bcrypt cost parameter, please provide a value between 4 and 31.
About bcrypt

bcrypt is a password hashing function based on the Blowfish cipher. In addition to incorporating a salt to protect against rainbow table attacks, it's an adaptive function in which the iteration count can be increased to make it slower, so it remains resistant to brute-force attacks even with increasing computation power because it takes longer and becomes too time consuming and expensive.

Exemplo

Este exemplo gera um hash de senha utilizando bcrypt com um fator de custo 4.

 var $password : Text
 var $hash : Text
 var $options : Object
 
 $options:=New object("algorithm";"bcrypt";"cost";4)
 $password:=Request("Por favor digite sua senha")
 
 $hash:=Generate password hash($password;$options)
 [Users]hash:=$hash
 SAVE RECORD([Users])

Nota: Múltiplas passadas da mesma senha resultará em diferentes strings hash. Esse é um comportamento normal para algoritmos como bcrypt, já que a melhor prática é criar um novo "sal" aleatório para cada hash. Veja a descrição Verify password hash para um exemplo de como checar as senhas.

Ver também

Generate digest
Verify password hash