[sql-Server]用什么数据类型来设置密码盐和哈希值以及长度是多少?

时间:2010-05-19 05:19:34

标签: sql-server-2005 hash types passwords salt

我使用

从密码生成salt和hash值
string salt = CreateSalt(TxtPassword.Text.Length);
string hash = CreatePasswordHash(TxtPassword.Text, salt);

private static string CreateSalt(int size)
{
    //Generate a cryptographic random number.
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    byte[] buff = new byte[size];
    rng.GetBytes(buff);

    // Return a Base64 string representation of the random number.
    return Convert.ToBase64String(buff);
}

private static string CreatePasswordHash(string pwd, string salt)
{
    string saltAndPwd = String.Concat(pwd, salt);
    string hashedPwd =
     FormsAuthentication.HashPasswordForStoringInConfigFile(
     saltAndPwd, "sha1");

    return hashedPwd;
}

您建议在sql server中存储这些值的数据类型是什么?任何建议......

盐:9GsPWpFD

哈希:E778AF0DC5F2953A00B35B35D80F6262CDBB8567

2 个答案:

答案 0 :(得分:8)

ASPNET_DB说这个 - 不会出错。

Password nvarchar(128) NOT NULL,
PasswordSalt nvarchar(128) NOT NULL,
虽然128可能看起来很多,但是各种类型的加密可能会导致比你开始时更大的字符串。绝对没有理由不跟随那些花费数千小时开发asp.net会员系统的聪明人的领导。

答案 1 :(得分:1)

我们将密码存储为二进制SHA512哈希