1

我在 asp.net 中有一个网页,其中 C# 作为代码隐藏。每个用户都有一个使用 PWDENCRYPT 生成的散列密码,但我使用 SQL Server 上的文件手动执行此操作。我正在考虑拥有它,以便每个人都可以更改自己的密码。

目前我有:

            SqlCommand cmd = new SqlCommand("select pwdencrypt('@MyPass')", Conn);
            cmd.Parameters.AddWithValue("@MyName", txtNewPass1.Text);
            string HashedPass;
            try
            {
                Conn.Open();
                HashedPass = cmd.ExecuteScalar().ToString();
                //rdr = cmd.ExecuteReader();
                //while (rdr.Read())
                //{
                //    if (rdr["pwdencrypt"] != DBNull.Value) MyNewPassH = (string)rdr["pwdencrypt"];
                //}
            }
            finally
            {
                if (rdr != null)
                {
                    rdr.Close();
                }
                if (Conn != null)
                {
                    Conn.Close();
                }
            }

这将获取我们的密码(txtNewPass1.Text)的新值,并尝试将散列密码获取到 HashedPass 字符串中。然后(在这一切之后)我们将把 HashedPass 放入数据库中,这一切都很好。

但目前,这只是返回一个 System.Byte[] - 或类似的东西。如前所述,我正在考虑将它放在一个字符串中,然后将其放入数据库中。有人有什么想法吗?我可能做错了什么,但不太清楚是什么。

4

1 回答 1

2

您可以使用base64 编码byte[]将 a 转换为 a 。string

string encodedString = System.Convert.ToBase64String(myBytes);

或者您可能希望使用 BLOB 或其他类似数据类型(例如 BINARY 或 VARBINARY)更直接地将字节存储在数据库中。(这里我对 SQL Server 的数据类型不太熟悉,所以我不能推荐具体使用哪个。)

于 2013-07-01T14:54:21.733 回答