加密字符串未正确存储在数据库中
本文关键字:数据库 存储 字符串 加密 | 更新日期: 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()
将字节数组编码为字符串。这应该能解决你的问题。