Avatar ·

Cifrado y descifrado de cadenas en C#: una forma simple y segura

¡Hola a todos! Soy un desarrollador C# principiante y tengo un problema con el cifrado de cadenas. Necesito guardar la contraseña de un usuario en la base de datos cifrada, y luego al iniciar sesión descifrarla y compararla con la contraseña ingresada. Probé usar algoritmos simples, pero el código resulta engorroso y, según entiendo, inseguro. Esto es lo que escribí: ```csharp public static string Encrypt(string text) { byte[] data = Encoding.UTF8.GetBytes(text); for (int i = 0; i < data.Length; i++) { data[i] = (byte)(data[i] ^ 0xFF); // XOR simple } return Convert.ToBase64String(data); } ``` Pero entiendo que esto es "cosa de niños" en términos de seguridad. He oído hablar de AES, pero no sé cómo usarlo correctamente con salt, initialization vector (IV) y key. Necesito un ejemplo funcional que: 1. Cifre la cadena de forma segura (preferiblemente AES-256). 2. Permita descifrarla de vuelta. 3. Use un IV aleatorio para cada cifrado. 4. Funcione en .NET 6+ y