PBKDF2,用于.Net核心中的标识符哈希(不是密码)

时间:2019-05-01 13:13:27

标签: asp.net-core encryption hash .net-core

在存储在数据库中之前,我需要对标识符进行哈希处理。总共将有多达一百万个值。我需要对这些值进行假名化才能符合GDPR。

我正在使用.Net核心,但我想继续使用核心哈希功能。我不想冒险使用外部哈希实现。目的是在散列之前向每个值添加一个盐短语。这些值已经由供应商进行了哈希处理,但是在存储到db中之前,我将再次对其进行哈希处理。

我本打算使用SHA256,但我已经读过PBKDF2更安全。但是,我已阅读PBKDF2容易发生冲突。至关重要的是,我使用的哈希实现具有较低的冲突机会。 PBKDF2的碰撞率是否比简单的SHA256高?使用HMACSHA512与PBKDF2而不是HMACSHA1的键派生是否减少了冲突的可能性? 想要为Net core提供安全,低冲突的单向哈希的建议。

1 个答案:

答案 0 :(得分:2)

  

总共将有1百万个值。我需要对这些值进行假名化才能符合GDPR
   我本打算使用SHA256,但我已经读过PBKDF2更安全。

对于这种用例,正确的密码哈希是最好的选择。

PBKDF2是一种密钥派生功能,旨在从相对较弱的密码中派生更高的熵密钥。它在后台使用哈希,因此,如果哈希具有一定的哈希冲突概率,则pbkdf将具有相同的值。

pbkdf2的运行速度很慢(使用迭代),以减轻暴力破解输入密码的可行性。您不需要该属性,即使它可能对您的用例不利。

所以-您可以大胆地使用sha256匿名化数据,恕我直言,这可能是您今天拥有的最佳选择。实际上,原则上您不能防止哈希冲突,但是概率应该可以忽略不计