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+ 中运行。