繁体   English   中英

C#哈希密码创建盐问题

[英]C# hash password create salt question

如果我通过使用类似这样的方法来创建盐:

public class User
    {
        private const int Hash_Salt_Length = 8;
        private byte[] saltBytes = new byte[Hash_Salt_Length];


        public User()
        {
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            rng.GetNonZeroBytes(saltBytes);     
        }
        ....

}

每个会话的saltBytes字节数组将有所不同(重新启动应用程序)。 如何检查密码以允许用户登录我们的应用程序?

您需要将盐以及密码哈希存储在数据库中。

请注意,您不应调用GetNonZeroBytes ,因为它提供的随机性较小。

如果每次重新启动应用程序时盐值都发生变化,则必须将其存储在数据库中(在用户记录中)。

salt是在创建用户记录时生成的静态内容,并将其与用户ID和密码+ salt的哈希一起存储。

当用户尝试登录时,您可以使用ID查找盐,将盐与他们的密码结合起来,对其进行哈希处理并与存储的哈希进行比较。 如果他们匹配,他们就进来了。

这种盐的存在是为了使有权访问您的安全数据库的攻击者无法预先准备密码->哈希映射的数据库,然后执行简单的反向查找来尝试确定密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM