我想从医学ID中创建一个唯一的ID,这听起来像是一个常见的问题,但是我还没有在堆栈溢出或者Google上找到这个主题。我对python还不熟悉,所以一个代码示例就太棒了!
我已经得到了几个多达400万行的数据,其中有5-6000个不同的病人,我希望能够用相同的代码和唯一的机会增加更多的病人(最多500万个独特的病人)。在最终合并的数据集中,我总共获得了1000万行。
即使您知道医疗ID的格式,也几乎不可能对生成的唯一ID进行反向工程。
医疗ID由生日(YYMMDD)和仅为数字(0-9)和/或字母(A)的四个变量组成。
我阅读了以下有关这一主题的帖子,但仍有一些问题没有得到回答:
这里的Irreversible unique ID from String描述了使用彩虹表来修改唯一ID的可能性,并描述了使用salt绕过使用彩虹台的可能性。不幸的是,盐是我最近研究过的东西。
https://www.sohamkamani.com/uuid-versions-explained/如果我使用UUID v1,它依赖于当前的计算机MAC-adress,这不是一个选项,因为相同的唯一ID应该在其生成的计算机上是相同的独立的。我真的不知道用UUID v4和一个彩虹机反向设计唯一的ID的可能性,对于一个有正确知识的人来说,找出医疗身份系统是很容易的。
使用散列的从Python中的字符串生成ID,难道不是很容易被逆向工程的吗?
所以我的要求是:
是否有符合上述要求的解决方案?你能不能提供一个代码示例,如果没有上面提到的链接已经有我所需要的?
例子:(DDMMYYXXXX) 2022年出生的人的形象身份证
Medical ID Bloodsample Date
0 0101221234 5.2
1 0101224321 6.2
2 311222R09B 7.6
3 0203221234 3.8
4 311222R09B 5.7
5 0405229082 9.5
6 1012225879 7.2
7 2801226787 5.2
8 2706221HF9 6.3
9 3112228768 4.6
0和3,2和4是相同的病人。4和7不是同一个病人。
发布于 2021-12-15 20:04:56
DDMMYYXXXX
这些信息给出了出生日期,这可能是识别一小群人的重要提示,不太适合匿名化。
从医学ID生成的唯一ID..。
您要寻找的可能是哈希函数,加密散列函数(如SHA-256 )具有抗冲突能力。这意味着对于不同的输入产生相同的散列值的概率应该是可以忽略不计的(不管从数学上来说永远不会为零)。
没有任何可能的方法来扭转它与一个彩虹(非常重要,因为它是敏感的信息)。
加密散列将使值不可能反转。
彩虹表在有一组已知的输入值时是有效的。对于输入集MMDDYYXXXX,应该可以在合理的时间内生成所有可能的值。创建反向查找表
在这种情况下,您可以尝试使用HMAC,它是一个带有秘密密钥的散列函数。
不幸的是,python不是我的母语,所以您必须查阅您最喜欢的搜索引擎来搜索实现。
https://stackoverflow.com/questions/70368735
复制相似问题