【问题标题】:Using MD5 Hash to compare database records使用 MD5 Hash 比较数据库记录
【发布时间】:2014-06-08 10:25:09
【问题描述】:

健康相关记录(我相信其他类型的数据库记录)中的一个常见问题是单个患者可能出现在多个单独记录下的主索引中。这可能导致患者拥有多个 ID。我突然想到,管理此问题的一种方法是构建固定信息的 MD5 散列,然后比较散列。例如,我们可以假设名字、姓氏、出生日期和地址是一致的。它们可以在单个字符串中连接在一起,删除空格并全部小写。然后可以通过 MD5 算法解析字符串。虽然这不是故障安全的(地址可能会改变),但它可能会有所帮助。我真的很想对此提供一些反馈,或者对替代方法的建议?

【问题讨论】:

  • 为什么不直接索引现有字段?

标签: java sql md5


【解决方案1】:

如果您从输入字符串中删除 Address 事物,我会建议使用此方法。地址可能会改变,有时人们会因为懒惰而拼错地址。我建议添加除地址之外的另一个元素,不要只保留名字、姓氏和出生日期,因为虽然概率不高,但可能会发生冲突。一个简单的实现:

   String first_name = "Abdul";
   String last_name = "Ansari";
   String DOB = "29/09/1994";
   String fourth_element = ""; //Add something
   String data = first_name + last_name + DOB + fourth_element;
   data = data.replaceAll(" ","");
   data = data.toLowerCase();
   MessageDigest md = MessageDigest.getInstance("MD5");
   md.update(data.getBytes());
   byte[] digest = md.digest();
   // Then convert the bytes to hex and add them in database

【讨论】:

    【解决方案2】:

    我看不出使用 MD5 有什么意义。您创建的字符串可用于比较相等性。

    或者,您可以有多个匹配级别。例如,如果匹配名字、姓氏、生日和地址,则完美匹配,然后被翻译为同一个人。另一方面,名字,姓氏,生日,但不是地址,然后将由人工审查以确定它是否匹配......

    【讨论】:

    • 我明白你的意思,但我猜健康记录的复杂性在于数据可能需要“去识别化”。哈希将捕获重复项而不透露名称。我承认这不是我的初衷,只是认为允许。
    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2022-06-11
    • 2013-03-08
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多