C# Bcyrpt生成无盐密码?
我正在使用第三方库中的.NETBCrypt散列实现,它有一个创建散列的方法,只需提供文本或密码,如下所示C# Bcyrpt生成无盐密码?,c#,.net,hash,bcrypt,bcrypt.net,C#,.net,Hash,Bcrypt,Bcrypt.net,我正在使用第三方库中的.NETBCrypt散列实现,它有一个创建散列的方法,只需提供文本或密码,如下所示 Bcrypt.HashPassword("password") 我知道生成的hash包含salt信息,但在创建hash时它没有获取salt参数 Bcrypt在内部创建随机盐并使用它 如果我不使用salt重载方法,它可能会导致安全漏洞?从理论上讲,您应该执行以下操作,其中p是给定的密码: 生成加密强随机saltS ComputeH=Hash(S+P),其中Hash是一种加密强散列算法 在数
Bcrypt.HashPassword("password")
我知道生成的hash包含salt信息,但在创建hash时它没有获取salt参数
Bcrypt在内部创建随机盐并使用它
如果我不使用salt重载方法,它可能会导致安全漏洞?从理论上讲,您应该执行以下操作,其中
p
是给定的密码:
S
H=Hash(S+P)
,其中Hash
是一种加密强散列算法S
和H
p'
,当且仅当H==Hash(S+p')
时验证该用户
Bcrypt是否在内部创建并使用随机盐
盐不是它应该只在内部创造的东西。它应该给你盐存储与散列盐+密码
如果我不使用salt重载方法,它会导致安全漏洞吗
是的。理论上你看起来不错,但你错过了Bcrypt的一些细节。Bcrypt可以验证哈希和文本,而不需要额外的salt参数,因为哈希字符串已经包含salt信息。检查这个问题的答案。所以没必要把盐藏在什么地方。@Freshblood啊,我不知道Bcrypt图书馆的细节。所以基本上,他们所谓的散列实际上只是盐和散列(或类似的东西)的串联。无论如何,我会把这个答案留在这里,尽管可能有更好的答案来解释Bcrypt的行为。