Librería de clases para encriptación y desencriptación utilizando AES, RSA y ECC.
$ dotnet add package DMS.SecurityPaquete NuGet: DMS.Security Autor: Fredy Fuentes Versión Actual: 2.0.0
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.
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}");
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}");
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}");
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}");
Puedes instalar el paquete desde NuGet:
dotnet add package DMS.Security --version 2.0.0
| 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). |
Este proyecto se encuentra bajo la licencia Apache-2.0.
Si deseas contribuir, revisa el archivo CONTRIBUTING.md para más detalles.
Para ver los cambios en cada versión, consulta el archivo CHANGELOG.md.