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

ACP*_*ACP 15 passwords hash types sql-server-2005 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;
}
Run Code Online (Sandbox Code Playgroud)

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

盐:9GsPWpFD

哈希:E778AF0DC5F2953A00B35B35D80F6262CDBB8567

Sky*_*ers 8

ASPNET_DB说这个 - 不会出错.

Password nvarchar(128) NOT NULL,
PasswordSalt nvarchar(128) NOT NULL,
Run Code Online (Sandbox Code Playgroud)

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

  • -1 /对不起,但"微软聪明,我傻,我跟马萨"是一种不好的态度.Especialyl有时会给出微软的大量愚蠢.提出论点. (11认同)
  • @tomtom - 哇.我想你有很多实现安全堆栈的经验,并且已经遍及源代码和列和存储过程的每一行,它构成了非常强大和灵活的asp.net提供程序堆栈,以备份我对我的语句的简要判断.嗯...我认识的人符合这种描述..... (5认同)
  • 好吧,我做到了.但我也尝试使用我的大脑而不是盲目跟随别人可能做过的事 - 出于完全不同的原因,你甚至不在乎.顺便说一句,我很怀疑甚至MS会花费数千(!)的工时来开发asp.net会员系统,而其他人总共花费100左右的mabe.而且你知道会员系统在后来的.net版本中"被加入"之后,聪明人完全忽略了它可以通过任何方式扩展吗?MS并不完美. (3认同)