加密字符串未正确存储在数据库中

本文关键字:数据库 存储 字符串 加密 | 更新日期: 2023-09-27 18:28:00

我在C#中执行一些加密任务,遇到了一个我无法完全解决的问题。我有时会得到非常复杂的用户密码的咸散列字符串,而这些字符串由于某种原因没有正确存储在数据库中。

我使用的是从RNGCryptoServiceProvider类随机生成的8字节salt。我正在使用SHA256Managed类作为我的HashAlgorithm。我正在从通过ASCIIEncoding.Default.GetString()方法创建的字节中获取要存储的字符串。存储这些值的列的类型为(NVARCHAR(50), NULL)。我使用SqlCommand类存储它们。

当我遍历代码并使用即时窗口时,我可以很好地看到确切的字符串。当我呼叫cmd.ExecuteNonQuery()时,问题似乎正在发生。我应该采取与下面不同的做法吗?

string query = @"UPDATE User SET password = @password WHERE id = @userID";
cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@password", encryptedPassword);
cmd.Parameters.AddWithValue("@userID", userID);
int rowsAffected = cmd.ExecuteNonQuery();

如果你需要任何进一步的信息,请告诉我。我只是不想在这里放太多关于我的确切算法或它的结果

谢谢。

加密字符串未正确存储在数据库中

尝试使用Convert.ToBase64String()将字节数组编码为字符串。这应该能解决你的问题。