asp.net-core - .Net 核心中用于标识符散列(不是密码)的 PBKDF2
问题描述
在存储到数据库之前,我需要对标识符进行哈希处理。总共将有多达 100 万个值。我需要对这些值进行化名以符合 GDPR。
我正在使用 .Net 核心,我想继续使用核心散列功能。我不想冒险使用外部散列实现。目的是在散列之前为每个值添加一个盐短语。供应商已经对这些值进行了哈希处理,但我将在存储到 db 之前再次进行哈希处理。
我打算使用 SHA256,但我读到 PBKDF2 更安全。但是,我读过 PBKDF2 容易发生冲突。最重要的是,我使用的散列实现具有较低的冲突机会。PBKDF2 的冲突率是否比简单的 SHA256 更高?使用带有 PBKDF2 的 HMACSHA512 的密钥派生而不是 HMACSHA1 会减少冲突的可能性吗?想要为 Net core 提供安全、低冲突的单向哈希的建议。
解决方案
总共将有多达 100 万个值。我需要对这些值进行假名化以符合 GDPR
我打算使用 SHA256 但我读过 PBKDF2 更安全。
对于这个用例,正确的加密哈希是最好的选择。
PBKDF2 是一种密钥派生函数,旨在从相对较弱的密码中派生出更高熵的密钥。它在底层使用哈希,因此如果哈希具有一定的哈希冲突概率,pbkdf 将具有相同的哈希值。
pbkdf2 旨在变慢(使用迭代)以减轻暴力破解输入密码的可行性。您不需要该属性,即使它可能对您的用例不利。
所以 - 你可以大胆地使用 sha256 来匿名化你的数据,恕我直言,这可能是你今天最好的选择。事实上,原则上你不能防止哈希冲突,但概率应该可以忽略不计
推荐阅读
- wordpress - 永久链接添加不需要的问号
- python - $ cdk synth 'python' 不是内部或外部命令、可运行程序或批处理文件
- javascript - 从 Firefox 上的 AJAX 响应下载的文本文件中忽略换行符,与 Chrome 一起工作正常
- tomcat - 当应用程序部署在 Tomcat 根目录时更改 tomcat favicon
- r - 将字符串作为参数传递给粘贴函数
- node.js - 如何在 react-js 中获取 MAC 地址和操作系统名称
- ruby - Python 的 iter()/next() 的 Ruby 等价物是什么?
- react-native - 如何在具有导航组件的函数中使用道具
- python-3.x - 如何展平列表中的两个或多个数组?
- java - arg4j 选项但没有参数