- Регистрация
- 1 Мар 2015
- Сообщения
- 6,420
- Баллы
- 155
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
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:
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:
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:
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.
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();
}
Índice
- Instalação
- Uso
- Importando a Classe
- Criando um Hash
- Verificando um Hash
- Verificando se um Hash Precisa de Rehashing
- Entendendo o Bcrypt
- Tratamento de Exceções
- Testes
- Licença
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.
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();
}