O Lithe Hash é um módulo robusto projetado para hashing seguro de senhas utilizando o algoritmo Bcrypt. Este módulo simplifica o processo de criação, verificação e gerenciamento de hashes de senhas, garantindo que as melhores práticas de segurança sejam seguidas.
Índice
Instalação
Para instalar o pacote lithemod/hash
, você pode usar o Composer. Execute o seguinte comando no seu terminal:
composer require lithemod/hash
Isso adicionará o pacote às dependências do seu projeto, permitindo que você utilize a classe Hash em sua aplicação.
Uso
Importando a Classe
Antes de usar a classe Hash, você deve importá-la em seu arquivo PHP:
use Lithe\Support\Security\Hash;
Criando um Hash
Para criar um hash a partir de uma senha, utilize o método make
. O método aceita uma senha e um array opcional de opções:
$hash = Hash::make('sua_senha', ['cost' => 10]);
Parâmetros:
-
string $value
: A senha a ser hashed. -
array $options
: Parâmetros opcionais (por exemplo, cost) para ajustar o algoritmo de hashing.
Retorna: Uma string hash que pode ser armazenada em um banco de dados.
Exemplo:
$password = 'minha_senha_segura';
$hash = Hash::make($password, ['cost' => 12]);
echo "Senha Hashed: " . $hash;
Verificando um Hash
Para verificar se uma senha corresponde ao hash, utilize o método check
:
$isValid = Hash::check('sua_senha', $hash);
if ($isValid) {
echo 'Senha é válida!';
} else {
echo 'Senha inválida.';
}
Parâmetros:
-
string $value
: A senha a ser verificada. -
string $hash
: A senha hash para comparação.
Retorna: true
se a senha corresponder ao hash; false
caso contrário.
Exemplo:
if (Hash::check('minha_senha_segura', $hash)) {
echo 'Senha está correta!';
} else {
echo 'Senha está incorreta!';
}
Verificando se um Hash Precisa de Rehashing
Você pode determinar se um hash precisa ser rehashed (por exemplo, se você alterar o fator de custo) utilizando o método needsRehash
:
$needsRehash = Hash::needsRehash($hash, ['cost' => 14]);
if ($needsRehash) {
// Rehash com um novo custo
$hash = Hash::make('sua_senha', ['cost' => 14]);
}
Parâmetros:
-
string $hash
: A senha hash a ser avaliada. -
array $options
: Parâmetros opcionais para especificar o custo.
Retorna: true
se o hash precisa ser rehashed; false
caso contrário.
Exemplo:
if (Hash::needsRehash($hash, ['cost' => 15])) {
$hash = Hash::make('minha_senha_segura', ['cost' => 15]);
echo "Senha Rehashed: " . $hash;
}
Entendendo o Bcrypt
O Bcrypt é uma função de hashing de senhas amplamente utilizada, projetada para ser lenta e intensiva em computação, tornando-a resistente a ataques de força bruta. Ao utilizar um fator de custo configurável, o Bcrypt permite que você aumente a dificuldade do hashing conforme o hardware se torna mais rápido.
- Fator de Custo: O fator de custo determina a complexidade computacional de hashing de uma senha. Ele representa o número de iterações do algoritmo de hashing. Um custo mais alto significa mais segurança, mas também aumenta o tempo de processamento. A faixa recomendada é entre 10 e 12 para a maioria das aplicações.
Tratamento de Exceções
O método make
lança uma InvalidArgumentException
se o custo for definido fora da faixa válida (4 a 31). Você deve tratar isso em seu código para garantir robustez:
try {
$hash = Hash::make('sua_senha', ['cost' => 3]); // Custo inválido
} catch (\InvalidArgumentException $e) {
echo "Erro: " . $e->getMessage();
}