Hashio é uma biblioteca C # para criptografar strings, comumente usada para proteger senhas de usuários. Esta implementação usa o algoritmo PBKDF2 para realizar a criptografia, e você pode encontrar mais detalhes sobre isso na documentação oficial disponível aqui. Esta implementação é uma abstração baseada na implementação disponibilizada pela Microsoft aqui.
Use os meios de instalação abaixo.
Para instalar pela linha de comando (CLI), basta executar o seguinte comando na pasta do projeto:
dotnet add package Hashio
Basta pesquisar "Hashio" em seu Visual Studio e clicar em adicionar pacote.
Existem dois caminhos para utilizar o Hashio: Usando com as Configurações Padrão ou definindo as suas, caso deseje.
Para usar o Hashio rapidamente e sem configurações adicionais, basta utilizar a class Hasher
e chamar os métodos que você precisa, como por exemplo:
string password = "HashioIsAwesome!";
// Gerando um hash de senha
string hash = Hasher.Hash(password);
// Verificar se a senha informada é a senha hash gerada.
bool validate = Hasher.Check(hash, password);
Por padrão, as seguintes configurações são definidas:
- Iterations = 10000;
- Hash Algorithm = SHA256;
- Key Size = 32;
- Mininum Salt Size = 32;
- Maximum Salt Size = 32;
Se necessário, você também pode personalizar as configurações por meio do método WithOptions
da classe Hasher
. Ele recebe um objeto da classe HashingOptions
e permite que você altere:
-
Number of Iterations
-
Hash Algorithm
-
Salt Size
-
Mininum Salt Size
-
Maximum Salt Size
💡 Você também precisará usar a classe
System.Security.Cryptography.HashAlgorithmName
para escolher um algoritmo de hash.
Abaixo está um exemplo de como usá-lo:
var hashOptions = new HashingOptions
{
Iterations = 10000,
HashAlgorithm = System.Security.Cryptography.HashAlgorithmName.SHA512, // Mudou de 256 para 512
MinSaltSize = 16, // Mudou de 32 para 16
MaxSaltSize = 64, // Mudou de 32 para 64
KeySize = 64, // Mudou de 32 para 64
};
// Você passa as opções como parâmetro para o método WithOptions
Hasher.WithOptions(hashOptions);
Qualquer problema, dúvida ou sugestão, abra como um problema e eu responderei assim que tiver tempo. 😅