DMS.Security 2.0.0

dotnet add package DMS.Security --version 2.0.0
                    
NuGet\Install-Package DMS.Security -Version 2.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="DMS.Security" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DMS.Security" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="DMS.Security" />
                    
Project file
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 DMS.Security --version 2.0.0
                    
#r "nuget: DMS.Security, 2.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 DMS.Security@2.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=DMS.Security&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=DMS.Security&version=2.0.0
                    
Install as a Cake Tool

DMS.Security

NuGet Version NuGet Downloads

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
2.0.0 135 9/9/2025
1.0.5 131 9/2/2025
1.0.4 181 8/26/2025
1.0.3 174 8/26/2025
1.0.2 1,693 8/26/2025
1.0.1 221 3/27/2025