Avatar ·

C# 中字符串的加密与解密:简单且安全的方法

大家好!我是一名初学 C# 的开发者,遇到了字符串加密的问题。我需要将用户密码以加密形式存储在数据库中,然后在登录时解密并与输入的密码进行比较。我尝试过使用简单的算法,但代码变得冗长且不安全。 以下是我写的代码: ```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 } return Convert.ToBase64String(data); } ``` 但我明白这在安全性上只是“小儿科”。我听说过 AES,但不知道如何正确使用 salt、initialization vector (IV) 和 key。我需要一个可用的示例,它能够: 1. 可靠地加密字符串(最好是 AES-256)。 2. 允许解密回原字符串。 3. 每次加密使用随机的 IV。 4. 在 .NET 6+ 中运行。