我有大约 2TB 的 CSV,其中第一个2 列包含两个身份证号码。这些数据需要匿名,以便数据可用于学术研究。匿名化可以(但不一定)是不可逆的。这些不是医疗记录,所以我不需要最奇特的加密算法。
问题:
标准哈希算法会生成很长的字符串,但我必须进行大量 ID 匹配(即“对于包含 ID XXX 的数据中的行子集,执行...)”来处理匿名数据,因此这并不理想。有没有更好的办法?
例如,如果我知道有大约 1000 万个唯一帐号,是否有使用整数集 [1:10million] 作为替换/匿名 ID 的标准方法?
计算限制是数据可能会在 32 核 ~500GB 服务器机器上进行匿名化。
我假设您想要进行一次传递,一个带有 ID 的 CSV
数字作为输入,另一个带有匿名数字的 CSV 作为输出。我会
还假设唯一 ID 的数量约为 10
万元以下。
我认为最好使用一些完全任意的
从一组 ID 号 (N) 到一组的一对一函数
去识别化号码 (D)。这样会更安全。如果你用过一些
某种哈希函数,对手知道哈希是什么,
N 中的数字可以通过 a 来恢复,而不需要太多麻烦
字典攻击。相反,我建议使用一个简单的查找表:ID 1234567
映射到去识别号码 4672592 等。对应关系是
存储在另一个文件中,没有该文件的对手将无法
能够做很多事。
在您描述的机器上,有 1000 万条或更少的记录,
这不是什么大问题。伪 Python 中的 sketch 程序:
mapping = {}
unused_numbers = list(range(10000000))
while data:
read record
for each ID number N in record:
if N in mapping:
D = mapping[N]
else:
D = choose_random(unused_numbers)
unused_numbers.del(D)
mapping[N] = D
replace N with D in record
write record
write mapping to lookup table file
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)