我在 C# 中做一些加密任务,遇到了一个我不太明白的问题。我有时会为用户密码得到非常复杂的加盐哈希字符串,并且由于某种原因,这些字符串没有正确存储在数据库中。
我正在使用从RNGCryptoServiceProvider
类中随机生成的 8 字节盐。我正在使用该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();
如果您需要任何进一步的信息,请告诉我。我只是不想在这里过多地谈论我的确切算法或它的结果。
谢谢你。