MVC 3 Crypto Helper——这会增加额外的保护以使密码更安全吗?

发布于 2024-11-25 03:17:02 字数 557 浏览 0 评论 0原文

A

string salt = Crypto.GenerateSalt();
string saltAndPwd = String.Concat(originalPassword, salt);
string hashedPwd = Crypto.HashPassword(saltAndPwd);

B

string hashedPwd = Crypto.HashPassword(originalPassword);

请问方法A和方法B哪个更安全?或者哪个是正确的方法?使用反射器,我发现这是核心中的哈希密码方法:

public static string HashPassword(string password)
{
if (password == null)
{
    throw new ArgumentNullException("password");
    }
    return HashWithSalt(password, GenerateSaltInternal(0x10));
}

A

string salt = Crypto.GenerateSalt();
string saltAndPwd = String.Concat(originalPassword, salt);
string hashedPwd = Crypto.HashPassword(saltAndPwd);

B

string hashedPwd = Crypto.HashPassword(originalPassword);

May i know Method A and Method B, which is more secure ? or which is the correct approach ? with reflector, i found this is the hash password method in the core :

public static string HashPassword(string password)
{
if (password == null)
{
    throw new ArgumentNullException("password");
    }
    return HashWithSalt(password, GenerateSaltInternal(0x10));
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

宫墨修音 2024-12-02 03:17:02

由于使用盐的主要目的是击败彩虹表,因此在 HashPassword 已经做的事情上添加额外的盐似乎不会给你带来太多好处,只会产生额外的开销(因为你有存储您自己生成的盐,HashPassword 将其构建到返回值中)。作为参考,HashPassword 的作用如下:

密码哈希是使用 RFC 2898 算法使用 128 位盐、256 位子密钥和 1000 次迭代生成的。生成的哈希字节流的格式为{0x00, salt, subkey},在返回之前经过base-64编码。

因此,简而言之,框架中的内容对于任何“足够好”的合理定义来说已经足够好了。

As the main purpose of using a salt is to defeat rainbow tables, adding additional salt to what HashPassword already does doesn't seem like it will gain you much benefit, and only incur additional overhead (as you have to store the salt you generate yourself. HashPassword builds it into the returned value). For reference, this is what HashPassword does:

The password hash is generated with the RFC 2898 algorithm using a 128-bit salt, a 256-bit subkey, and 1000 iterations. The format of the generated hash bytestream is {0x00, salt, subkey}, which is base-64 encoded before it is returned.

So, in short, what's in the framework already is good enough for any reasonable definition of good enough.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文