DMS.Security
2.0.0
dotnet add package DMS.Security --version 2.0.0
NuGet\Install-Package DMS.Security -Version 2.0.0
<PackageReference Include="DMS.Security" Version="2.0.0" />
<PackageVersion Include="DMS.Security" Version="2.0.0" />
<PackageReference Include="DMS.Security" />
paket add DMS.Security --version 2.0.0
#r "nuget: DMS.Security, 2.0.0"
#:package DMS.Security@2.0.0
#addin nuget:?package=DMS.Security&version=2.0.0
#tool nuget:?package=DMS.Security&version=2.0.0
DMS.Security
Paquete NuGet: DMS.Security Autor: Fredy Fuentes Versión Actual: 2.0.0
📜 Descripción
DMS.Security
es una librería de seguridad para .NET moderna y robusta, diseñada para ser fácil de usar sin comprometer la seguridad. Implementa cifrado autenticado simétrico (AES-GCM, ChaCha20-Poly1305) y esquemas de cifrado híbrido asimétrico (ECC, RSA), junto con utilidades seguras para el hashing de contraseñas y la generación de datos aleatorios.
🚨 Nota de Migración desde v1.x: La versión 2.0.0 es una reescritura completa con cambios que rompen la compatibilidad para corregir vulnerabilidades y modernizar la API. Por favor, revisa los nuevos ejemplos de uso para adaptar tu código.
📝 Características Principales
- Cifrado Simétrico Moderno: AES-GCM y ChaCha20-Poly1305 para cifrado autenticado (AEAD) que garantiza confidencialidad e integridad.
- Cifrado Asimétrico Híbrido: ECC y RSA para cifrar datos de cualquier tamaño de forma segura y eficiente.
- Hashing de Contraseñas Seguro: Implementación de PBKDF2-SHA256 con alto número de iteraciones y protección contra ataques de temporización.
- Tokens con Expiración: Soporte para cifrado con tiempo de vida limitado, validado de forma segura.
- Utilidades Seguras:
- Generador de cadenas aleatorias criptográficamente seguro.
- Ofuscador de IDs numéricos a formato GUID de forma reversible y segura.
📖 Ejemplos de Uso
Cifrado Simétrico con AES-GCM (Recomendado)
using DMS.Security.Symmetric;
var encryptor = new AesGcmEncryption(AesGcmEncryption.GenerateNewKey());
string originalText = "Este es un mensaje secreto y autenticado.";
// Cifrar con una validez de 1 hora
string encryptedToken = encryptor.Encrypt(originalText, TimeSpan.FromHours(1));
// Descifrar (fallará si es manipulado o expira)
string decryptedText = encryptor.Decrypt(encryptedToken);
Console.WriteLine($"Token Cifrado: {encryptedToken}");
Console.WriteLine($"Texto Descifrado: {decryptedText}");
Cifrado Asimétrico con ECC
using DMS.Security.Asymmetric;
// 1. El receptor (Alice) genera su par de claves y comparte la pública.
var aliceKeys = EccEncryption.GenerateKeyPair();
// 2. El emisor (Bob) usa la clave pública de Alice para cifrar un mensaje.
string secretMessage = "Hola, Alice!";
string encryptedMessage = EccEncryption.Encrypt(secretMessage, aliceKeys.PublicKey);
// 3. Alice usa su clave privada para descifrar el mensaje.
string decryptedMessage = EccEncryption.Decrypt(encryptedMessage, aliceKeys.PrivateKey);
Console.WriteLine($"Mensaje Descifrado: {decryptedMessage}");
Hashing y Verificación de Contraseñas
using DMS.Security.Hashers;
string userPassword = "Password123!@#";
// Guardar este hash en la base de datos
string hashedPassword = PasswordHasher.HashPassword(userPassword);
// Verificar durante el login
bool isPasswordCorrect = PasswordHasher.VerifyPassword(userPassword, hashedPassword);
Console.WriteLine($"La contraseña es correcta: {isPasswordCorrect}");
Ofuscar un ID de Base de Datos
using DMS.Security.Obfuscators;
// La clave debe ser secreta y gestionada de forma segura
using var obfuscator = new GuidObfuscator("MiClaveSecreta16");
int originalId = 12345;
string obfuscatedId = obfuscator.Obfuscate(originalId);
int deobfuscatedId = obfuscator.DeobfuscateToInt(obfuscatedId);
Console.WriteLine($"ID Original: {originalId} -> GUID: {obfuscatedId}");
Console.WriteLine($"GUID: {obfuscatedId} -> ID Original: {deobfuscatedId}");
🚀 Instalación
Puedes instalar el paquete desde NuGet:
dotnet add package DMS.Security --version 2.0.0
🛠 Compatibilidad
- .NET 9.0+
⚠️ Mejores Prácticas
- Gestión de Claves: Nunca almacenes claves, secretos o contraseñas en el código fuente. Usa un servicio de gestión de secretos como Azure Key Vault, AWS KMS o el Secret Manager de .NET para desarrollo.
📄 Documentación de Clases Principales
Clase | Descripción |
---|---|
AesGcmEncryption |
Cifrado simétrico autenticado (AEAD) con AES-GCM. |
ChaCha20Poly1305Encryption |
Cifrado simétrico autenticado (AEAD) con ChaCha20. |
EccEncryption |
Cifrado híbrido asimétrico con Curvas Elípticas. |
RsaEncryption |
Cifrado híbrido asimétrico con RSA. |
PasswordHasher |
Hashing y verificación de contraseñas con PBKDF2. |
GuidObfuscator |
Ofuscador reversible de IDs numéricos a GUID. |
RandomStringGenerator |
Generador de cadenas aleatorias criptográficamente seguro. |
SecureTokenAnalyzer |
Analiza tokens cifrados sin descifrarlos (ej. IsExpired ). |
📄 Licencia
Este proyecto se encuentra bajo la licencia Apache-2.0.
📌 Cómo Contribuir
Si deseas contribuir, revisa el archivo CONTRIBUTING.md
para más detalles.
📜 Changelog
Para ver los cambios en cada versión, consulta el archivo CHANGELOG.md
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. 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. |
-
net9.0
- No dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on DMS.Security:
Package | Downloads |
---|---|
DMS.Connection.Crm
Biblioteca para conexión segura con CRM. Incluye ejecución de consultas SQL. |
|
DMS.Connection.Adv
Biblioteca para conexión segura con nodos de Advance. Incluye ejecución de consultas SQL, autenticación y gestión dinámica de nodos con cifrado. |
|
DMS.Connection.CrmErp
Biblioteca para conexión segura con CRM-Erp. Incluye ejecución de consultas SQL. |
GitHub repositories
This package is not used by any popular GitHub repositories.