用于包含电话号码的庞大数据集的哈希和加密技术

Lea*_*ner 6 security encryption algorithm cryptography hash-function

问题描述: 我正在使用高度敏感的数据集,其中包含人员的电话号码信息作为其中一列.我需要应用(加密/散列函数)将它们转换为某些编码值并进行分析.它可以是单向散列 - 即,在使用加密数据处理后,我们不会将它们转换回原始电话号码.基本上,我正在寻找一个匿名者,它接收电话号码并将它们转换为一些随机值,我可以在其上进行处理.建议这个过程的最佳方法.欢迎使用有关最佳算法的建议.

更新:数据 集的大小我的数据集确实非常庞大,数百GB.

更新:敏感 敏感,我的意思是电话号码不应该是我们分析的一部分.所以,基本上我需要一个单向散列函数但没有冗余 - 每个电话号码应映射到唯一值 - 两个电话号码应该不映射到相同的值.

更新:实施?

感谢您的回答.我正在寻找精心实施.我正在通过python的hashlib库进行散列,它是否必须执行您建议的相同步骤?链接在这里

你能给我一些示例代码来实现这个过程,最好是在Python中吗?

jbt*_*ule 4

为您的数据集生成密钥(16 或 32 字节)并保密。使用此密钥对您的数据使用Hmac-sha1,并对其进行 Base 64 编码,并且每个电话号码都有一个不可逆转的随机唯一字符串(没有密钥)。

使用Keyczar 的示例(具有 256 位密钥的 Hmac-Sha1):

创建随机密钥:

$> python keyczart.py create --location=path_to_key_set --purpose=sign
$> python keyczart.py addkey --location=path_to_key_set --status=primary
Run Code Online (Sandbox Code Playgroud)

匿名电话号码:

from keyczar import keyczar

def anonymize(phone_num):
  signer = keyczar.Signer.Read("path_to_key_set");
  return signer.Sign(phone_num)
Run Code Online (Sandbox Code Playgroud)