Canducci.GeneratePassword.Argon2id
1.0.0
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
.NET Framework 4.6.1
This package targets .NET Framework 4.6.1. The package is compatible with this framework or higher.
dotnet add package Canducci.GeneratePassword.Argon2id --version 1.0.0
NuGet\Install-Package Canducci.GeneratePassword.Argon2id -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Canducci.GeneratePassword.Argon2id" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Canducci.GeneratePassword.Argon2id" Version="1.0.0" />
<PackageReference Include="Canducci.GeneratePassword.Argon2id" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Canducci.GeneratePassword.Argon2id --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Canducci.GeneratePassword.Argon2id, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Canducci.GeneratePassword.Argon2id@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Canducci.GeneratePassword.Argon2id&version=1.0.0
#tool nuget:?package=Canducci.GeneratePassword.Argon2id&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Canducci GeneratePassword
Biblioteca para hash de senha com dois conjuntos separados:
Argon2id (padrao recomendado)
PBKDF2 (compatibilidade e cenarios especificos)
Pacotes NuGet
Argon2id (padrao recomendado)
PM> Install-Package Canducci.GeneratePassword.Argon2id
PM> Install-Package Canducci.GeneratePassword.Argon2id.Extensions.DependencyInjection
PBKDF2
PM> Install-Package Canducci.GeneratePassword
PM> Install-Package Canducci.GeneratePassword.Extensions.DependencyInjection
Uso rapido - Argon2id (padrao)
Biblioteca (sem DI)
using Canducci.GeneratePassword.Argon2id;
string password = "abc@#$%12";
IArgon2idConfiguration config = new Argon2idConfiguration();
IArgon2idPasswordHasher hasher = new Argon2idPasswordHasher(config);
// Gera salt + hash separados
IArgon2idValue value = hasher.Hash(password);
// Valida senha
bool valid1 = hasher.Valid(password, value);
bool valid2 = hasher.Valid(password, value.Salt, value.Hashed);
// Formato versionado para armazenamento:
// argon2id-v1$iterations$memoryKb$parallelism$salt$hash
string encoded = hasher.HashEncoded(password);
bool valid3 = hasher.ValidEncoded(password, encoded);
ASP.NET Core com DI
using Canducci.GeneratePassword.Argon2id;
using Canducci.GeneratePassword.Argon2id.Extensions.DependencyInjection;
public void ConfigureServices(IServiceCollection services)
{
services.AddArgon2idPasswordHasher(config =>
{
// Opcionais: defaults seguros ja sao aplicados
config.IterationCount = Argon2idConfiguration.DefaultIterationCount;
config.MemorySizeKb = Argon2idConfiguration.DefaultMemorySizeKb;
config.DegreeOfParallelism = Argon2idConfiguration.DefaultDegreeOfParallelism;
});
}
using Canducci.GeneratePassword.Argon2id;
public class HomeController
{
private readonly IArgon2idPasswordHasher _hasher;
public HomeController(IArgon2idPasswordHasher hasher)
{
_hasher = hasher;
}
}
Uso rapido - PBKDF2
using Canducci.GeneratePassword;
IPbkdf2Configuration config = new Pbkdf2Configuration();
IPbkdf2PasswordHasher hasher = new Pbkdf2PasswordHasher(config);
IPbkdf2Value value = hasher.Hash("abc@#$%12");
bool valid = hasher.Valid("abc@#$%12", value);
Migracao PBKDF2 → Argon2id
Estratégia recomendada: migracao progressiva no login (sem reset de senha em massa).
Fluxo:
- Tente validar primeiro com Argon2id.
- Se falhar, tente validar com PBKDF2 legado.
- Se PBKDF2 validar, gere novo hash Argon2id e atualize no banco.
- Marque o registro como Argon2id (ou salve no formato encoded com prefixo de algoritmo).
Exemplo:
using Canducci.GeneratePassword;
using Canducci.GeneratePassword.Argon2id;
public bool ValidateAndRehash(
string password,
string algorithm, // "argon2id" ou "pbkdf2"
string salt,
string hash,
Action<string, string, string> updatePassword) // (algorithm, salt, hash)
{
IArgon2idPasswordHasher argon = new Argon2idPasswordHasher(new Argon2idConfiguration());
IPbkdf2PasswordHasher pbkdf2 = new Pbkdf2PasswordHasher(new Pbkdf2Configuration());
if (algorithm == "argon2id")
{
return argon.Valid(password, salt, hash);
}
if (algorithm == "pbkdf2")
{
bool validLegacy = pbkdf2.Valid(password, salt, hash);
if (!validLegacy)
{
return false;
}
// Rehash automatico para Argon2id apos login valido
IArgon2idValue newValue = argon.Hash(password);
updatePassword("argon2id", newValue.Salt, newValue.Hashed);
return true;
}
return false;
}
Compatibilidade legada
BCrypt, BCryptConfiguration, BCryptValue e AddGeneratePassword continuam disponiveis somente por compatibilidade e estao marcados como Obsolete.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.6.1
- Konscious.Security.Cryptography.Argon2 (>= 1.3.1)
-
.NETStandard 2.0
- Konscious.Security.Cryptography.Argon2 (>= 1.3.1)
-
.NETStandard 2.1
- Konscious.Security.Cryptography.Argon2 (>= 1.3.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Canducci.GeneratePassword.Argon2id:
| Package | Downloads |
|---|---|
|
Canducci.GeneratePassword.Argon2id.Extensions.DependencyInjection
Argon2id DI extensions. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 126 | 3/5/2026 |
Initial release - Argon2id password hasher.